東京海上日動プログラミングコンテスト2025(AtCoder Beginner Contest 402)の解説記事です。
ABC402 A – CBC
問題
問題文の要約は以下の通りです。
問題の要約
英大文字と英小文字からなる文字列 \(S\) が与えられます。 \(S\) の英大文字のみを元の順序で連結して得られる文字列を出力せよ。
解説1
大文字の一覧を用意して、1文字ずつ大文字かどうか判定する。
解説
入力を受け取ります。
# 入力
S=input()答えの文字列ansを用意します。入力の文字列を順番に見て、大文字のとき答えの文字列に連結します。大文字かどうかはs in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'で判定できます。
# 答えの文字列
ans=''
# 入力の文字列を順番に見る
for s in S:
# 大文字のとき文字を連結する。
if s in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
ans+=s
# 出力
print(ans)解答
# 入力
S=input()
# 答えの文字列
ans=''
# 入力の文字列を順番に見る
for s in S:
# 大文字のとき文字を連結する。
if s in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
ans+=s
# 出力
print(ans)解説2
大文字の一覧はstring.ascii_uppercaseで用意されているのでこれを使用する。
string.ascii_uppercaseをそのままprintすると大文字の一覧が出力されます。
import string
print(string.ascii_uppercase)ABCDEFGHIJKLMNOPQRSTUVWXYZ解説
stringを使用するのでこれをimportし、入力を受け取ります。
import string
# 入力
S=input()答えの文字列ansを用意します。入力の文字列を順番に見て、大文字のとき答えの文字列に連結します。大文字かどうかはs in string.ascii_uppercaseで判定できます。
# 答えの文字列
ans=''
# 入力の文字列を順番に見る
for s in S:
# 大文字のとき文字を連結する。
if s in string.ascii_uppercase:
ans+=s
# 出力
print(ans)解答
import string
# 入力
S=input()
# 答えの文字列
ans=''
# 入力の文字列を順番に見る
for s in S:
# 大文字のとき文字を連結する。
if s in string.ascii_uppercase:
ans+=s
# 出力
print(ans)ABC402 B – Restaurant Queue
問題
問題文の要約は以下の通りです。
問題の要約
はじめ、待ち行列には誰も並んでいません。待ち行列に並ぶ人は必ず、注文する料理のメニュー番号が書かれた食券を持っています。 \(Q\) 個の以下のいずれかの形式のクエリを処理せよ。
1 X:メニュー番号Xの食券を持った人が行列の末尾に並ぶ。2:行列の先頭の人をレストランに案内し、その人のメニュー番号を出力する。
解説1
リストで待ち行列を管理する。
リストの最後に追加するにはappend()、リストの最初の要素を取得し削除するにはpop(0)を用います。
解説
入力を受け取ります。
# 入力
Q=int(input())待ち行列のリストを用意し、 \(Q\) 個のクエリを順に受け取ります。
1 X:メニュー番号Xの食券を持った人が行列の末尾に並ぶ。
1番目のクエリの場合、リストの最後に追加するにはappend()を用います。
2:行列の先頭の人をレストランに案内し、その人のメニュー番号を出力する。
2番目のクエリの場合、リストの最初の要素を取得し削除するにはpop(0)を用います。
# リスト
list=[]
# Q個のクエリを処理
for _ in range(Q):
# クエリを受け取り
n,*x= map(int,input().split())
# リストに追加
if n==1:
list.append(x[0])
# 先頭をメニュー番号を出力、先頭を削除
else:
print(list.pop(0))解答
# 入力
Q=int(input())
# リスト
list=[]
# Q個のクエリを処理
for _ in range(Q):
# クエリを受け取り
n,*x= map(int,input().split())
# リストに追加
if n==1:
list.append(x[0])
# 先頭をメニュー番号を出力、先頭を削除
else:
print(list.pop(0))解説2
キューで待ち行列を管理する。
キューの最後に追加するにはappend()、キューの最初の要素を取得し削除するにはque.popleft()を用います。
解説
キューを使用するためライブラリをimportし、入力を受け取ります。
from collections import deque
# 入力
Q=int(input())待ち行列のキューを用意し、 \(Q\) 個のクエリを順に受け取ります。
1 X:メニュー番号Xの食券を持った人が行列の末尾に並ぶ。
1番目のクエリの場合、キューの最後に追加するにはappend()を用います。
2:行列の先頭の人をレストランに案内し、その人のメニュー番号を出力する。
2番目のクエリの場合、キューの最初の要素を取得し削除するにはque.popleft()を用います。
# キュー
que=deque()
# Q個のクエリを処理
for _ in range(Q):
# クエリを受け取り
n,*x= map(int,input().split())
# キューに追加
if n==1:
que.append(x[0])
# 先頭をメニュー番号を出力、先頭を削除
else:
print(que.popleft())解答
from collections import deque
# 入力
Q=int(input())
# キュー
que=deque()
# Q個のクエリを処理
for _ in range(Q):
# クエリを受け取り
n,*x= map(int,input().split())
# キューに追加
if n==1:
que.append(x[0])
# 先頭をメニュー番号を出力、先頭を削除
else:
print(que.popleft())
