🌐
【AtCoder】ABC410 振り返り📝
ABC410 - A
問題はこちら
い つ も の
N = int(input())
A = list(map(int,input().split()))
K = int(input())
count = 0;
for i in range(N):
if(A[i]>=K):
count += 1
print(count)
ABC410 - B
問題はこちら
[1,2,3,4,5] を 1 2 3 4 5 で出力する方法がわからずちょっと手こずった。
こんな簡単な方法があるんだね~
N,Q = map(int,input().split())
X = list(map(int,input().split()))
boxArray = [0]*(N)
ballArray = [0]*(Q)
for num in range(Q):
if(X[num]>0):
boxArray[X[num]-1] += 1
ballArray[num] = X[num]
else:
for i in range(N):
if(boxArray[i]==min(boxArray)):
boxArray[i] += 1
ballArray[num] += i+1
break
print(*ballArray)
ABC410 - C
問題はこちら
またまたTLE~~~!!!!;;
一生懸命調べてratateとか便利なもの使ってみたのにTLEだヨ~!!
もうロジックからダメなんだろうな…
from collections import deque
N,Q = map(int,input().split())
# クエリを取得
Querry = []
for i in range(Q):
Querry.append(list(map(int, input().split())))
# 整数列を生成
A = deque([0]*N)
for i in range(N):
A[i] = i+1;
# 関数を定義
def type1(p,x):
A[p-1] = x
def type2(p):
print(A[p-1])
def type3(k):
times = k%N
A.rotate(-times)
# クエリを処理
for num in range(Q):
thisQuerry = Querry[num]
if (thisQuerry[0] == 1):
type1(thisQuerry[1],thisQuerry[2])
elif (thisQuerry[0] == 2):
type2(thisQuerry[1])
else:
type3(thisQuerry[1])
今回の感想
今回C問題の解法考える中でいろんなこと知れた!
参考
deque.rotate関数from collections import deque
deque_obj.rotate(n)
n: 回転させる要素の数。正の整数で右回転、負の整数で左回転。
参考
スライスの数字list = [0, 10, 20, 30, 40, 50, 60]
print(list[:3])
# [0, 10, 20]
print(list[3:])
# [30, 40, 50, 60]
スライスの数字 閉区間→ [n:m) ←開区間
参考
浅いコピーと深いコピーstrlist1 = ['foo', 'bar', 'baz']
strlist2 = strlist1.copy() # 浅いコピーの作成
strlist3 = strlist1 # intlist1とintlist3は同じリストオブジェクトを参照する
浅いコピーを変更しても元の配列は変更されない(私が普段やりたいのはこれ!)
深いコピーを変更すると元の配列も変更される
Discussion