🌐

【AtCoder】ABC411 振り返り📝

に公開

ABC411 - A 【AC】

問題はこちら
最初>=>にして提出してしまった…
あるあるだから気をつけよう!

P = input()
L = int(input())

if(len(P) >= L):
    print("Yes")
else:
    print("No")

ABC411 - B 【AC】

問題はこちら
なんかワタワタしてしまってたけど、len(D)ってNでは?
まあ解けたのでヨシ!
先頭を捨てるのはなかなか良い思いつきだったと思うます。

N = int(input())
D = list(map(int,input().split()))

for i in range(len(D)):
    meter = 0
    distance = []
    for j in range(len(D)):
        meter += D[j]
        distance.append(meter)
    print(*distance)
    D.pop(0)

ABC411 - C 【AC】

問題はこちら
わりかし愚直だけどACできた!うれしい!
毎回カウントしてたらTLEするよな~と思っていたところに、前回のカウントの数値の使い道がいい感じに思い浮かびました!
たぶんもうちょっと綺麗な書き方ありそう。でも解けてうれしい!!

N,Q = map(int,input().split())
A = list(map(int,input().split()))

square = ["w"]*N
count = 0

def reverse(num):
    global square
    if(square[num] == "w"):
        square[num] = "b"
    else:
        square[num] = "w"
        
        
for i in range(Q):
    num = A[i]-1
    if(N==1):
        reverse(num)
        print(square.count("b"))
    else:
        if(i==0):
            count = 1
        elif(num==N-1):
            if(square[num-1]=="w" and square[num]=="w"):
                count += 1
            elif(square[num-1]=="w" and square[num]=="b"):
                count -= 1
        elif(num==0):
            if(square[num]=="w" and square[num+1]=="w"):
                count += 1
            elif(square[num]=="b" and square[num+1]=="w"):
                count -= 1
        else:
            if(square[num-1]==square[num] and square[num-1]==square[num+1]): # www bbb の時
                count += 1
            elif(square[num-1]!=square[num] and square[num-1]==square[num+1]): # wbw bwb の時
                count -= 1
        reverse(num)
        print(count)

今回の感想

今回ひっっっさしぶりにC問題が解けてはっぴ~~!!!
余裕があったのでD問題を覗いてみたら解き方はわかったけどTLEって感じでした。
てかこれ似たような問題最近やらなかったっけ?
私は解き方のロジックはわかっても実行時間がかかりすぎる書き方をしてしまうみたい。
実行時間なんてぜーんぜん考えたことがなかったので、今後はここを鍛えねば…!

Discussion