ABC284(AtCoder Beginners Contest 284)
A〜C問題をPythonで解いてみました。
- コードは雑めです。ゆるしてー
- 競技プログラミングの勉強一切したこと無いので、テクニックは知らないよ。ごめんねー
A問題(diff=10)
n = int(input())
s = []
for i in range(n):
s.append(input())
for i in range(n-1,-1,-1):
print(s[i])
- n個分文字列を受け取って、逆順でprintするだけの問題です
- range()を工夫すれば簡単に解ける問題ですね
B問題(diff=14)
t = int(input())
for ti in range(t):
tn = int(input())
tests = list(map(int,input().split()))
odd_count = 0
for tnum in tests:
if (tnum%2)==1:
odd_count += 1
print(odd_count)
- t個分テスト文字列を受け取って、奇数をカウントしてprintするだけの問題です
- 2重ループ使ってます
C問題(diff=193)
n, m = map(int,input().split())
graph_vertices = [False]*n
graph_edges = [[False]*n for i in range(n)]
for i in range(m):
e1, e2 = map(int,input().split())
e1 -= 1
e2 -= 1
graph_edges[e1][e2] = True
graph_edges[e2][e1] = True
def depthFirstSearch(i):
graph_vertices[i] = True
for i2 in range(n):
if graph_edges[i][i2] and not graph_vertices[i2]:
depthFirstSearch(i2)
count = 0
for i in range(n):
if graph_vertices[i] == False:
depthFirstSearch(i)
count += 1
print(count)
- 深さ優先探索です。
- 学生の頃に作ったすごろくゲームで実装したの懐かしい。StackOverflowしたのは良い思い出です。
- (追記)私のようにゴリゴリ実装しなくてもライブラリ呼び出すだけで解けるそうなので、「python 連結成分」などで検索されると良いと思います。
感想
C問題ちょっと難しかったかな?
でもこの問題でdiff200行かないんですね。難しくなりましたねぇ。