【AtCoder】ABC335解説(Python)

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)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次