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問題を解けたおかげでレート積むことができました。いよいよ茶色リーチの状態に…!
次回のコンテストで茶色になりたいですね、引き続き精進していきます。