๐ค๋ฌธ์ ํด๊ฒฐ
-
S1 | ๊ทธ๋ํ, BFS
์๋ ๊ทธ๋ฅ ๋ง ํ์ด์ ํด๊ฒฐํ๋๋ฐ ๋ฌธ์ ์์ BFS๋ผ๊ณ ํ๊ธธ๋, ๋ค์ ํ์ด๋ดค๋ค.
๊ทธ๋ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ค ์๋ฉด ๋ฌธ์ ๋ ๊ฐ๋จํ๋ค.
๋๊ฐ์ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค. ( ๋๋ณด๋ค ๋ฌด๊ฑฐ์ด ์ ๋ค, ๋๋ณด๋ค ๊ฐ๋ฒผ์ด ์ ๋ค )
- ๋๊ฐ์ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค. ( ๋๋ณด๋ค ๋ฌด๊ฑฐ์ด ์ ๋ค, ๋๋ณด๋ค ๊ฐ๋ฒผ์ด ์ ๋ค )
- ๋ชจ๋ ๋ฒํธ๋ฅผ ์ฐจ๋ก๋ก BFS ํ์ํ๋ค.
- ๊ทธ ๋ ๊ฐ ๋ฒํธ๋ง๋ค ์ด์๋ค์ ๊ฐ์๋ฅผ ์นด์ดํธํด์ค๋ค.
- ๊ฐ์๊ฐ ๋ ธ๋๊ฐ์์ ์ ๋ฐ ์ด์์ด๋ฉด ๊ฐ์ด๋ฐ ํ๋ณด๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ๋ต์ +1์ ํด์ค๋ค.
๐จ ๋๋ฒ์งธ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ visited ๋ฐฐ์ด์ ๋ฐ๋ก ์ฌ์ฉํ์ง ์์์ ์ค๋ณต์ด ๋ง์ด ๋ฐ์ํ๋ค.
๐ป์์ค ์ฝ๋
from collections import deque
def solution(N, M, compare):
answer = 0
heavy_adj = {x + 1: [] for x in range(N)}
light_adj = {x + 1: [] for x in range(N)}
for h, l in compare:
heavy_adj[l].append(h)
light_adj[h].append(l)
for i in range(1, N + 1):
visited = [0]*(N+1)
q = deque([i])
cnt = 0
while q:
c = q.popleft()
for nei in heavy_adj[c]:
if visited[nei] == 0:
visited[nei] = True
q.append(nei)
cnt += 1
if cnt > N // 2:
answer += 1
visited = [0] * (N + 1)
q.append(i)
cnt = 0
while q:
c = q.popleft()
for nei in light_adj[c]:
if visited[nei] == 0:
visited[nei] = True
q.append(nei)
cnt += 1
if cnt > N // 2:
answer += 1
print(answer)
if __name__ == "__main__":
N0, M0 = map(int, input().split())
compare0 = [list(map(int, input().split())) for _ in range(M0)]
solution(N0, M0, compare0)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/2617
๋ฌธ์
๋ชจ์์ ๊ฐ์ผ๋, ๋ฌด๊ฒ๊ฐ ๋ชจ๋ ๋ค๋ฅธ N๊ฐ์ ๊ตฌ์ฌ์ด ์๋ค. N์ ํ์์ด๋ฉฐ, ๊ตฌ์ฌ์๋ ๋ฒํธ๊ฐ 1,2,...,N์ผ๋ก ๋ถ์ด ์๋ค. ์ด ๊ตฌ์ฌ ์ค์์ ๋ฌด๊ฒ๊ฐ ์ ์ฒด์ ์ค๊ฐ์ธ (๋ฌด๊ฒ ์์๋ก (N+1)/2๋ฒ์งธ) ๊ตฌ์ฌ์ ์ฐพ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ ์ผ์ ํ๋ ค ํ๋ค.
์ฐ๋ฆฌ์๊ฒ ์ฃผ์ด์ง ๊ฒ์ ์ํ ์ ์ธ์ด๋ค. ํ ์์ ๊ตฌ์ฌ์ ๊ณจ๋ผ์ ์ํ ์ ์ธ์ ์์ชฝ์ ํ๋์ฉ ์ฌ๋ ค ๋ณด๋ฉด ์ด๋ ์ชฝ์ด ๋ฌด๊ฑฐ์ด๊ฐ๋ฅผ ์ ์ ์๋ค. ์ด๋ ๊ฒ M๊ฐ์ ์์ ๊ณจ๋ผ์ ๊ฐ๊ฐ ์ํ ์ ์ธ์ ์ฌ๋ ค์ ์ด๋ ๊ฒ์ด ๋ฌด๊ฑฐ์ด๊ฐ๋ฅผ ๋ชจ๋ ์์๋๋ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์ ํ ์๋ ๊ตฌ์ฌ๋ค์ ๋จผ์ ์ ์ธํ๋ค.
์๋ฅผ ๋ค์ด, N=5์ด๊ณ , M=4 ์์ ๊ตฌ์ฌ์ ๋ํด์ ์ด๋ ์ชฝ์ด ๋ฌด๊ฑฐ์ด๊ฐ๋ฅผ ์์๋ธ ๊ฒฐ๊ณผ๊ฐ ์๋์ ์๋ค.
- ๊ตฌ์ฌ 2๋ฒ์ด ๊ตฌ์ฌ 1๋ฒ๋ณด๋ค ๋ฌด๊ฒ๋ค.
- ๊ตฌ์ฌ 4๋ฒ์ด ๊ตฌ์ฌ 3๋ฒ๋ณด๋ค ๋ฌด๊ฒ๋ค.
- ๊ตฌ์ฌ 5๋ฒ์ด ๊ตฌ์ฌ 1๋ฒ๋ณด๋ค ๋ฌด๊ฒ๋ค.
- ๊ตฌ์ฌ 4๋ฒ์ด ๊ตฌ์ฌ 2๋ฒ๋ณด๋ค ๋ฌด๊ฒ๋ค.
์์ ๊ฐ์ด ๋ค ๊ฐ์ ๊ฒฐ๊ณผ๋ง์ ์๊ณ ์์ผ๋ฉด, ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ธ ๊ตฌ์ฌ์ ์ ํํ๊ฒ ์ฐพ์ ์๋ ์์ง๋ง, 1๋ฒ ๊ตฌ์ฌ๊ณผ 4๋ฒ ๊ตฌ์ฌ์ ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ธ ๊ตฌ์ฌ์ด ์ ๋ ๋ ์ ์๋ค๋ ๊ฒ์ ํ์คํ ์ ์ ์๋ค. 1๋ฒ ๊ตฌ์ฌ๋ณด๋ค ๋ฌด๊ฑฐ์ด ๊ฒ์ด 2, 4, 5๋ฒ ๊ตฌ์ฌ์ด๊ณ , 4๋ฒ ๋ณด๋ค ๊ฐ๋ฒผ์ด ๊ฒ์ด 1, 2, 3๋ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ต์ 2๊ฐ์ด๋ค.
M ๊ฐ์ ์์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ธ ๊ตฌ์ฌ์ด ๋ ์ ์๋ ๊ตฌ์ฌ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ์ค์ ๊ตฌ์ฌ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ N(1 ≤ N ≤ 99)๊ณผ ์ ์ธ์ ์ฌ๋ ค ๋ณธ ์์ ๊ฐ์ M(1 ≤ M ≤ N(N-1)/2)์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ M ๊ฐ์ ์ค์ ๊ฐ ์ค๋ง๋ค ๋ ๊ฐ์ ๊ตฌ์ฌ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ ๋ฒํธ์ ๊ตฌ์ฌ์ด ๋ค ๋ฒํธ์ ๊ตฌ์ฌ๋ณด๋ค ๋ฌด๊ฒ๋ค๋ ๊ฒ์ ๋ปํ๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ด ์ ๋๋ก ๋ ์ ์๋ ๊ตฌ์ฌ์ ์๋ฅผ ์ถ๋ ฅ ํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 4883. ์ผ๊ฐ ๊ทธ๋ํ (0) | 2020.09.20 |
---|---|
[python] ๋ฐฑ์ค - 13335. ํธ๋ญ (0) | 2020.09.20 |
[python] SWEA - 6019. ๊ธฐ์ฐจ ์ฌ์ด์ ํ๋ฆฌ (2) | 2020.09.18 |
[python] ๋ฐฑ์ค - 16953. A โ B (0) | 2020.09.18 |
[python] SWEA - 1248. ๊ณตํต์กฐ์ (0) | 2020.09.17 |