AtCoder Beginner Contest 241 参加記録

更新

タグ:

AtCoder Beginner Contest 241に参加しました。

240は開催告知を見逃して、参加できませんでした…。

今回の結果はABC3完でした。レーティング変化は335→385で増加!時間ギリギリとはいえ、茶色難易度だったC問題をパスできたのが大きかったようです。

あと少しで茶色…!

A - Digit Machine

問題文の通りに書くだけです。

an = [int(n) for n in input().split()]

print(an[an[an[0]]])

B - Pasta

愚直にループを回して一日ずつパスタを食べていきます。食べられなかった時点でNo、計画通り食べきることができたら(=ループを回しきることができたら)Yesをprintします。

n, m = map(int, input().split())
an = [int(n) for n in input().split()]
bn = [int(n) for n in input().split()]
an.sort()
bn.sort()

for b in bn:
    if b in an:
        an.remove(b)
    else:
        print("No")
        exit(0)

print("Yes")

C - Connect 6

正解の文字列のパターンを事前に列挙し、縦・横・斜めの6連続するマス目に正解のパターンが存在するか調べるという特大脳筋プレイで解きました。

よく考えたら正解の文字列を全部列挙しなくても、「#」が4つ以上存在するかどうかで判定すればよかったという…

まあ解けたのでヨシ!

ユーザー解説にあるように、共通の処理を関数に切り出すともっとスマートに解けそうです。

n = int(input())

candidates = ["######",".#####", "#.####", "##.###",
              "###.##", "####.#", "#####.", "..####",
              ".#.###", ".##.##", ".###.#", ".####.",
              "#..###", "#.#.##", "#.##.#", "#.###.",
              "##..##", "##.#.#", "##.##.", "###..#",
              "###.#.", "####.."]

pos_l = [list(input()) for i in range(n)]

rows = ["".join(pos_l[i]) for i in range(n)]
cols = []
for i in range(n):
    cols.append("")
    for j in range(n):
        cols[i] += pos_l[j][i]
obliques_1 = []
for i in range(0, n-5):
    for j in range(0, n-5):
        obliques_1.append("")
        for k in range(6):
            obliques_1[-1] += pos_l[i+k][j+k]
obliques_2 = []
for i in range(0, n-5):
    for j in range(5, n):
        obliques_2.append("")
        for k in range(6):
            obliques_2[-1] = pos_l[j-k][i+k] + obliques_2[-1]

for candidate in candidates:
    for row in rows:
        if candidate in row:
            print("Yes")
            exit(0)
    for col in cols:
        if candidate in col:
            print("Yes")
            exit(0)
    for oblique in obliques_1:
        if candidate in oblique:
            print("Yes")
            exit(0)
    for oblique in obliques_2:
        if candidate in oblique:
            print("Yes")
            exit(0)
print("No")

D~Ex

問題文すら見ていないので省略(๑´ڡ`๑)

感想

時間ギリギリでしたが、C問題を解けたおかげでレート積むことができました。いよいよ茶色リーチの状態に…!

次回のコンテストで茶色になりたいですね、引き続き精進していきます。