๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5567)
<๊ฒฐํผ์>
๋ฌธ์
์๊ทผ์ด๋ ์์ ์ ๊ฒฐํผ์์ ํ๊ต ๋๊ธฐ ์ค ์์ ์ ์น๊ตฌ์ ์น๊ตฌ์ ์น๊ตฌ๋ฅผ ์ด๋ํ๊ธฐ๋ก ํ๋ค. ์๊ทผ์ด์ ๋๊ธฐ๋ ๋ชจ๋ N๋ช ์ด๊ณ , ์ด ํ์๋ค์ ํ๋ฒ์ ๋ชจ๋ 1๋ถํฐ N๊น์ง์ด๋ค. ์๊ทผ์ด์ ํ๋ฒ์ 1์ด๋ค.
์๊ทผ์ด๋ ๋๊ธฐ๋ค์ ์น๊ตฌ ๊ด๊ณ๋ฅผ ๋ชจ๋ ์กฐ์ฌํ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ฆฌ์คํธ๋ฅผ ๋ฐํ์ผ๋ก ๊ฒฐํผ์์ ์ด๋ํ ์ฌ๋์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด์ ๋๊ธฐ์ ์ n (2 ≤ n ≤ 500)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๋ฆฌ์คํธ์ ๊ธธ์ด m (1 ≤ m ≤ 10000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค๋ถํฐ m๊ฐ ์ค์๋ ์น๊ตฌ ๊ด๊ณ ai bi๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ ai < bi ≤ n) ai์ bi๊ฐ ์น๊ตฌ๋ผ๋ ๋ป์ด๋ฉฐ, bi์ ai๋ ์น๊ตฌ๊ด๊ณ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด์ ๊ฒฐํผ์์ ์ด๋ํ๋ ๋๊ธฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
def friend(graph, start):
queue=graph.get(start) #์์ ์ ์น๊ตฌ
visited=[start]
while queue:
a=queue.pop(0)
visited.append(a) # ์์ ์ ์น๊ตฌ
visited+=graph.get(a) # ์น๊ตฌ์ ์น๊ตฌ
result=len(set(visited))-1 # ๊ฒฐํผ์์ ์ด๋ํ ์ฌ๋์ ์
return result
if __name__=='__main__':
n=int(input())
m=int(input())
graph={}
for i in range(n):
graph[i+1]=[]
for i in range(m):
x,y=map(int, sys.stdin.readline().split())
graph[x].append(y)
graph[y].append(x)
result=friend(graph, 1)
print(result)
ํ๋ฉด์๋ ์ด์ํ์ง๋ง ๋ค ํ๊ณ ๋ ์ด์ํ๋ค๊ณ ์๊ฐํ๋ ๋ฌธ์ ์ด๋ค. ๊ทธ๋ํ ํ์ ๋ฌธ์ ๋ผ ๋ณด๊ณ ๋ค์ด๊ฐ์ง๋ง ๋... ๊ทธ๋ ๊ฒ ํ์ง ๋ชปํ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค. ๊น์ด๋ฅผ ์ธ์ ๊น์ด๊ฐ 3 ์ด์ ์ผ ๋ break๋ฅผ ๊ฑธ๊ณ ์ถ๋ค๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ ์๊ฐ์ด์์ผ๋, ์๊ฐ๋๋ก ํ์ง ๋ชปํ๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฒ๋ ธ๋ค.
๋ค๋ฅธ ์ฌ๋ ํ์ด๋ฅผ ๋ด๋ ์... ์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ทธ๋์ ์ผ๋ถ๋ฌ ํจ์ ๋ช ๋ friend๋ก ์ง์๋ค...
- friend
- ์์ ์ ์น๊ตฌ๋ฅผ queue์ ๋ฃ๊ณ , visited์๋ start๋ง ๋ฃ์
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต: ์ฒซ ๋ฒ์งธ๋ฅผ pop ํ๊ณ ๊ทธ ๊ฐ๊ณผ ๊ทธ๋ํ์์ ๊ทธ ๊ฐ์ key๊ฐ์ผ๋ก ํ value๋ฅผ ์ถ๊ฐ
- result: visited๋ฅผ set ํ์ฌ ์ค๋ณต์ ์์ค ํ ์์ ์ ์ ์ธ 1์ ๋บ ๊ธธ์ด - main
- ์ ๋ ฅ
- ์๋ฐฉํฅ์ผ๋ก ์ถ๊ฐ
๋ด๊ฐ ์๊ฐํ ํ์ด๋ ์์ ๊ฐ๋ค. ์น๊ตฌ์ ์น๊ตฌ๊น์ง ์ฐพ๋ ๊ฒ์ด๋ฏ๋ก, ์ฒ์์ ๋์ ์น๊ตฌ๋ฅผ queue์ ๋ฃ๊ณ queue์ ๋ ๊ฐ์ ๋ํด์๋ง ํ ๋ฒ ๋ ์ฐพ์์ฃผ๋ฉด ์น๊ตฌ์ ์น๊ตฌ๋ฅผ ๋ค ์ฐพ์ ์ ์๋ ๊ฒ์ด ์๋๊ฐ...! ใ _ใ ์ ์ด๋ ๊ฒ ์ฝ๊ฒ ํ๋ฉด ์ ๋๋ ๊ฑด๊ฐ์... ใ ใ
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 18352_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2022.02.04 |
---|---|
[Baekjoon] 11724_์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.01.26 |
[Baekjoon] 1012_์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.01.11 |
[Baekjoon] 2667_๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2022.01.07 |
[Baekjoon] 2606_๋ฐ์ด๋ฌ์ค (0) | 2022.01.07 |