Study

AtCorder 254

AtCorder 254、飲みに行ってしまい参加できませんでした。

後日、やってみたのですが、A, Bしか解けませんでした。

最近はモチベーションが下がり気味ですが、復習だけはしておきます。

参考にする回答はこちら
https://qiita.com/u2dayo/items/e5f0a0f02c530f12b03b

【A】Last Two Digits

提出したコードはこちら

N = input()
print(N)

これは瞬殺レベルですね。解説とまったく同じコードでした。

【B】 Distance Between Tokens

提出したコードはこちら

N = int(input())

a_lists = [, ]

for i in range(N):
    if i < 2:
        print(*a_lists[i])
    else:
        aj =  * (i + 1)
        for j in range(i + 1):
            if j == 0:
                continue
            if i == j:
                aj[j] = 1
            else:
                aj[j] = a_lists[i - 1][j - 1] + a_lists[i - 1][j]
        print(*aj)
        a_lists.append(aj)

一応、パスしましたが、かなり汚いコードとなってしまいました。

問題文の意味がわかるのにも少し時間がかかりました。

【C】K Swap

できませんでした。何回が提出したのですが、WAやTLE、さらにはREまでありました。

途中まで考えていたコードはこちら

N, K = map(int, input().split())
an = list(map(int, input().split()))

an_sort = sorted(an)

# print(an)
# print(an_sort)

is_yes = True
for i, v in enumerate(an_sort):
    # print(f"{i=}")
    # vが元の配列でindex=i+K*xにあればOK
    x = 0
    is_ok = False
    for j in range(-2, N // K):
        # print(f"{i + K * j=}")
        if i + K * j < 0:
            continue
        if i + K * j > N:
            break
        if v == an[i + K * j]:
            is_ok = True
            break

    if is_ok is False:
        is_yes = False
        break
print("Yes" if is_yes else "No")

考え方自体は的外れってことはなさそうですが、コードが解説と全然違いますね・・・

解説のコードを読んでも何やっているか理解できないので、どうしたものかって感じです・・・

【D】Together Square

手も足も出ず。

平方数が算出できる虎の巻みたいのがあるのかなと思って、あまり考えずに断念しました。

解説見るとそんなものはなく、全探索しているようですが、やはり何やっているからわからず・・・

まとめ

参加できなかったのですが、もし参加していたら、A,Bしか解けていませんでした。

C, Dは解説見てもよくわからないというダメっぷり。このまま毎週末、参加しても、A,Bだけ解いて、C,Dは解説見てもわかりませーんというのを繰り返すだけなので、成長はなさそうです。

どうすれば成長できるのか、悩み中です。