| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ฝ๋ฉํ ์คํธ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- algorithm
- Backjoon
- ์ฝํ 
- boj
- ์๋ฃ๊ตฌ์กฐ
- SSAFY
- ๊ทธ๋ํ
- ์๊ณ ๋ฆฌ์ฆ
- kakao
- ํ์ด์ฌ
- ์์ ํ์
- sort
- SWEA
- ์คํ
- DFS
- ์ธํผ
- javascript
- ํํ
- ์ผ์ฑ
- Python
- ๋ฐฑ์ค
- ์นด์นด์ค
- SW์ญ๋ํ ์คํธ
- BFS
- ํ๋ก๊ทธ๋๋จธ์ค
- Blind
- DP
- Today
- Total
๋ง์ํ
[python] ๋ฐฑ์ค - 2617. ๊ตฌ์ฌ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

๐ค๋ฌธ์  ํด๊ฒฐ
- 
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
2617๋ฒ: ๊ตฌ์ฌ ์ฐพ๊ธฐ
๋ชจ์์ ๊ฐ์ผ๋, ๋ฌด๊ฒ๊ฐ ๋ชจ๋ ๋ค๋ฅธ N๊ฐ์ ๊ตฌ์ฌ์ด ์๋ค. N์ ํ์์ด๋ฉฐ, ๊ตฌ์ฌ์๋ ๋ฒํธ๊ฐ 1,2,...,N์ผ๋ก ๋ถ์ด ์๋ค. ์ด ๊ตฌ์ฌ ์ค์์ ๋ฌด๊ฒ๊ฐ ์ ์ฒด์ ์ค๊ฐ์ธ (๋ฌด๊ฒ ์์๋ก (N+1)/2๋ฒ์งธ) ๊ตฌ์ฌ์ ์ฐพ๊ธฐ ์ํด์ ๏ฟฝ
www.acmicpc.net
๋ฌธ์ 
๋ชจ์์ ๊ฐ์ผ๋, ๋ฌด๊ฒ๊ฐ ๋ชจ๋ ๋ค๋ฅธ 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 | 
 
                   
                   
                  