๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2606)
<๋ฐ์ด๋ฌ์ค>
๋ฌธ์
์ ์ข ๋ฐ์ด๋ฌ์ค์ธ ์ ๋ฐ์ด๋ฌ์ค๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ๋๋ค. ํ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๋ฉด ๊ทธ ์ปดํจํฐ์ ๋คํธ์ํฌ ์์์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์ปดํจํฐ๋ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด 7๋์ ์ปดํจํฐ๊ฐ <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ์์์ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ํ์. 1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๋ฉด ์ ๋ฐ์ด๋ฌ์ค๋ 2๋ฒ๊ณผ 5๋ฒ ์ปดํจํฐ๋ฅผ ๊ฑฐ์ณ 3๋ฒ๊ณผ 6๋ฒ ์ปดํจํฐ๊น์ง ์ ํ๋์ด 2, 3, 5, 6 ๋ค ๋์ ์ปดํจํฐ๋ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ํ์ง๋ง 4๋ฒ๊ณผ 7๋ฒ ์ปดํจํฐ๋ 1๋ฒ ์ปดํจํฐ์ ๋คํธ์ํฌ์์์ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
์ด๋ ๋ 1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ ธ๋ค. ์ปดํจํฐ์ ์์ ๋คํธ์ํฌ ์์์ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, 1๋ฒ ์ปดํจํฐ๋ฅผ ํตํด ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ์ปดํจํฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ปดํจํฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ปดํจํฐ์ ์๋ 100 ์ดํ์ด๊ณ ๊ฐ ์ปดํจํฐ์๋ 1๋ฒ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋ค. ๋์งธ ์ค์๋ ๋คํธ์ํฌ ์์์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ ์์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ด์ ๊ทธ ์๋งํผ ํ ์ค์ ํ ์์ฉ ๋คํธ์ํฌ ์์์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ์ ๋ฒํธ ์์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ ธ์ ๋, 1๋ฒ ์ปดํจํฐ๋ฅผ ํตํด ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ์ปดํจํฐ์ ์๋ฅผ ์ฒซ์งธ ์ค์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
def bfs(graph, start): #๋๋น ์ฐ์ ํ์
visited=[]
temp=[start]
while temp:
a=temp.pop(0)
if a not in visited: # ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด
visited.append(a)
temp+=graph.get(a)
return visited
if __name__=='__main__':
num=int(input())
pair=int(input())
graph={}
for i in range(num): #init
graph[i+1]=[]
for i in range(pair): # graph ์ฐ๊ฒฐ
a,b=map(int ,sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
print(len(bfs(graph,1))-1) # 1๋ฒ ์ปดํจํฐ๋ ์ ์ธ
- bfs
- visited list ์ ์ธ, temp list์ ์์ํ ์ปดํจํฐ ๋ฒํธ ๋ฃ์ด์ ์ ์ธ
- temp list๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต: temp์์ ๋งจ ์ ๊ฐ์ ๋ฝ์์ ์์ง ๋ฐฉ๋ฌธํ ์ปดํจํฐ๊ฐ ์๋๋ผ๋ฉด visited์ ์ถ๊ฐํ๊ณ temp list์ ๊ทธ ์ปดํจํฐ์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ ๋ฒํธ๋ฅผ ์ถ๊ฐ - main
- ์ปดํจํฐ ์, ๊ฐ์ ์ ์ ๋ ฅ
- ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ ์ ์ dict๋ก ํํ -> key ๊ฐ๋ค ์ ์ธ
- ์๋ฐฉํฅ ๊ฐ์ ์ด๋ฏ๋ก ์์ชฝ key์ value ์ถ๊ฐ
- ์ถ๋ ฅ: bfs์ ๋ฐํ ๊ฐ์ ๊ธธ์ด - 1(1๋ฒ ์ปดํจํฐ ์ ์ธ)
์๊ฐ๐ค
์ด ๋ฌธ์ ๋ bfs๋ก ํ๊ฑฐ๋ dfs๋ก ํ์ด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ์ด์ bfs์ dfs ๊ฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๋ค.
๊ทผ๋ฐ... ๋ง๊ฒ ํ๊ณ ์๋๊ฑด๊ฐ?
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1012_์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.01.11 |
---|---|
[Baekjoon] 2667_๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2022.01.07 |
[Baekjoon] 1260_DFS์ BFS (0) | 2022.01.06 |
[Baekjoon] 5397_ํค๋ก๊ฑฐ (0) | 2022.01.05 |
[Baekjoon] 7795_๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ (0) | 2022.01.04 |