4完して気分が良いので
ABC 247
A - Move Right
$ 0 $ と$ S[0:3] $を結合して出力する
s = input()
print("0" + s[:-1])
B - Unique Nicknames
あだなは、「自分以外の姓あるいは名のどちらとも一致しない」ので、姓と名についてのCounterを作る
Counterは辞書的なやつで、ある値が配列に何回出てきたかを数えてくれる
普通に辞書で書いても良い(そっちのほうが良さそう)
from collections import Counter
n = int(input())
ST = [input().split() for _ in range(n)] # 入力を受け取る
s = Counter([ST[_][0] for _ in range(n)] + [ST[_][1] for _ in range(n)]) # 姓と名が何回現れてるか数える
for i in range(n):
st, tt = ST[i]
if s[tt] == 1 or s[st] == 1 or (st == tt and s[st] == 2):
continue
exit(print("No"))
print("Yes")
C - 1 2 1 3 1 2 1
割りと愚直に再帰を書く
この時、値(私のコードだと
def solve( n ):
if n == 1:
return "1"
if S[n - 1] == -1:
S[n - 1] = solve(n - 1)
return f"{S[n - 1]} {n} {S[n - 1]}"
N = int(input())
S = [-1 for _ in range(30)]
ans = solve(N)
print(ans)
D - Cylinder
dequeを知ってると解けそう(dequeは配列っぽいやつで、先頭・末尾のデータを削除・追加が
from collections import deque
q = int(input())
d = deque()
for _ in range(q):
t = input().split()
if t[0] == "1":
x, c = map(int, t[1:]) # 値、個数
d.append((x, c))
else:
c = int(t[1]) # 個数
total = 0
while True:
if c <= 0:
break
a, b = d.popleft()
if b <= c:
total += a * b
c -= b
else:
total += c * a
d.appendleft((a, b - c))
c = 0
print(total)