ABC335の回
A-問題
最初の発想は、"2023"を"2024"で置換するコーディングでしたが誤りがあり
末尾に '4' を追加する方針に変更しました。
A.py
# 2024/1/6 本番解答
# 入力
S = input()
T = ""
# 末尾を残して、T へ転記する
for i in range(len(S)-1):
T += S[i]
# 末尾に '4' を追加する
T += '4'
print(T)
B-問題
x,y,z の全通りを配列に格納しソートする方針で当初「set」で重複を削除するコードを書いていましたが、WAを記録したので重複削除をコメントアウトしたところ正答になりました。
B.py
# 2024/1/6 本番解答
N = int(input())
# x,y,z の全通りを配列Lへ格納
L = []
for x in range(N+1):
for y in range(N-x+1):
for z in range(N-x-y+1):
if x + y + z <= N:
w = []
w.append(x)
w.append(y)
w.append(z)
L.append(w)
# 配列Lをソート
S = sorted(L)
for i in range(len(S)):
print(*S[i])
C-問題
問題通りの動作を実装しましたが、TLEで通りませんでした。時間を作って正答ができるように勉強します。
C.py
# サンプルは、解けるがTLE
N,Q = map(int,input().split())
S = []
T = []
for _ in range(Q):
s,t = map(str,input().split())
S.append(s)
T.append(t)
C = [[0,0]]
for i in range(1,N+1):
a = [i,0]
C.append(a)
for i in range(Q):
if S[i] == '2':
t = int(T[i])
print(*C[t])
elif S[i] == '1':
U = [[0,0]]
if T[i] == 'U':
x = C[1][0]
y = C[1][1]
U.append([x,y+1])
for j in range(1,N):
U.append(C[j])
elif T[i] == 'R':
x = C[1][0]
y = C[1][1]
U.append([x+1,y])
for j in range(1,N):
U.append(C[j])
elif T[i] == 'D':
x = C[1][0]
y = C[1][1]
U.append([x,y-1])
for j in range(1,N):
U.append(C[j])
elif T[i] == 'L':
x = C[1][0]
y = C[1][1]
U.append([x-1,y])
for j in range(1,N):
U.append(C[j])
C = U