AtCoder Beginner Contest 335(Sponsored by Mynavi)の解説記事です。
目次
ABC335 A – 202<s>3</s>
問題
問題文の要約は以下の通りです。
問題の要約
2023
で終わる、英小文字と数字からなる文字列 \(S\) の最後の文字を4
に変更し、変更後の文字列を出力せよ。
制約
・\(S\) は英小文字と数字からなる長さ4以上、100以下の文字列
・\(S\) は2023
で終わる
入力
\(S\)
出力
答えを出力せよ。
解説
\(S\) の最後の文字以外に4
を結合する。
解説
まず入力 \(S\) を文字列として受け取ります。
# 入力
S = input()
\(S\) の最後の文字以外はS[:-1]
で書けるので4
を結合すると、S[:-1] + '4'
となります。
# 出力
print(S[:-1] + '4')
解答
# 入力
S = input()
# 出力
print(S[:-1] + '4')
ABC335 B – Tetrahedral Number
問題
問題文の要約は以下の通りです。
問題の要約
整数 \(N\) が与えられたとき、非負整数の組 \((x, y, z)\) であって \(x + y + z \le N \) を満たすものを辞書順で小さい方から順に全て出力せよ。
制約
・\(0 \le N \le 21\)
・\(N\) は整数
入力
\(N\)
出力
非負整数の組 \((x, y, z)\) であって \(x + y + z \le N \) を満たすものを、1行に1組ずつ \(x\), \(y\), \(z\) を空白区切りで、辞書順で小さい方から順に全て出力せよ。
解説
\(x\), \(y\), \(z\) の順でループして出力する。
解説
まず入力 \(N\) をint
型として受け取ります。
# 入力
N=int(input())
\(x\), \(y\), \(z\) の順でループして\(x + y + z \le N \)であれば答えを出力します。
for i in range(N+1):
for j in range(N+1):
for k in range(N+1):
if i+j+k<=N:
# 出力
print(i,j,k)
解答
# 入力
N=int(input())
for i in range(N+1):
for j in range(N+1):
for k in range(N+1):
if i+j+k<=N:
# 出力
print(i,j,k)
ABC335 C – Loong Tracking
問題
解説
竜のパーツの位置をリストで逆順に持ち、移動するたびにリストに追加する。
解答
# 入力
N,Q=map(int,input().split())
# 竜のパーツの位置
Loong = []
# 初期の竜のパーツの位置を逆向きに追加 後[(n,0),(n-1,0),...,(1,0)]前
for i in range(N,0,-1):
Loong.append([i,0])
# クエリを処理
for _ in range(Q):
query=input().split()
# 竜を移動
if query[0]=='1':
# 先頭のパーツの座標を取得(リストの最後の要素)
x,y=Loong[-1]
if query[1]=='R':
Loong.append([x+1,y])
if query[1]=='L':
Loong.append([x-1,y])
if query[1]=='U':
Loong.append([x,y+1])
if query[1]=='D':
Loong.append([x,y-1])
# 竜のパーツの位置を回答
if query[0]=='2':
# query[1]番目のパーツの座標を取得(リストの最後から数える)
x,y=Loong[-(int(query[1]))]
print(x,y)