์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - ๊ทธ๋ํ
<๊ฐ์ฅ ๋จผ ๋ ธ๋>
๋ฌธ์ ์ค๋ช
n๊ฐ์ ๋ ธ๋๊ฐ ์๋ ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ์ ํ์์ต๋๋ค. 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ ์ต๋จ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ ธ๋๋ค์ ์๋ฏธํฉ๋๋ค.
๋ ธ๋์ ๊ฐ์ n, ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด vertex๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ ธ๋์ ๊ฐ์ n์ 2 ์ด์ 20,000 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ฉฐ ์ด 1๊ฐ ์ด์ 50,000๊ฐ ์ดํ์ ๊ฐ์ ์ด ์์ต๋๋ค.
- vertex ๋ฐฐ์ด ๊ฐ ํ [a, b]๋ a๋ฒ ๋ ธ๋์ b๋ฒ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
def bfs(graph, start, depth):
queue=[start]
while queue:
temp=queue.pop(0)
for i in graph[temp]:
if depth[i]==0 and i!=1: # ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ
depth[i]=depth[temp]+1 #depth
queue.append(i)
return depth
def solution(n, edge):
answer = 0
graph={}
depth=[0]*(n+1)
for i in range(n):
graph[i+1]=[]
for i in edge: #graph
graph[i[0]].append(i[1])
graph[i[1]].append(i[0])
result=bfs(graph,1, depth)
find=max(result) #๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋
ธ๋
for value in result:
if value==find:
answer+=1
return answer
์ฒ์์๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์๋ค.
โ ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋๊ฐ?
๋ ์ด์ ์๊ฐ์ ์ค์ผ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์ ๊ฒ์์ ํ์ ๋น๋ ธ๋ค. ์ด๊ฒ ๋๋ฌธ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด๊ฐ ์๊ฐํ ๊ฒ์ผ๋ก๋ ๋ฐฉ๋ฌธ์ ํ์ธํ๋ list์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ dict๋ฅผ ๋ฐ๋ก ๊ตฌํํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ list ํ๋๋ก ํฉ์ณ ๊ตฌํํ๋๋ ์๊ฐ ์ด๊ณผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
- bfs
- queue: [๋ ธ๋]
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต -> queue์ ๋งจ ์ ๊ฐ ๋ฝ๊ธฐ -> ๊ทธ ๋ ธ๋(x)์ ์ฐ๊ฒฐ๋ ๋ ธ๋(y) ํ์ -> ์ฐ๊ฒฐ๋ ๋ ธ๋(y)์ depth ๊ฐ์ด 0์ด๊ณ 1์ด ์๋ ๋ค๋ฅธ ๋ ธ๋์ด๋ฉด ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒ -> ์ฐ๊ฒฐ๋ ๋ ธ๋(y)์ depth ๊ฐ: ๋ ธ๋(x)์ depth +1 -> queue์ ์ฐ๊ฒฐ๋ ๋ ธ๋(y) ์ถ๊ฐ - main
- graph: dict, ์๋ฐฉํฅ ์ถ๊ฐ
- depth: list, n+1๊ฐ ๋ง๋ค์ด์ ๊ฑฐ๋ฆฌ ํ์
- result: bfs ํธ์ถํ์ฌ ์ป์ depth ๊ฒฐ๊ณผ
- find: 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋
- 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ
์๊ฐ๐ค
์ฒ์์ ๊ตฌํํ ํ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ ๋ ์ ๋ง ๋ง๋งํ์๋ค.
์๊ฐ๋ณด๋ค ์ฝ๊ฒ ๊ตฌํํ์ผ๋ฉฐ ๋ ์ด์ ์๊ฐ์ ์ค์ผ ๊ณณ์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด์๋ค. ํ์ง๋ง ๊ฒ์์ ํตํด ๋ด๊ฐ ์๊ฐ๋ณด๋ค ๋ง์ list, dict๋ฅผ ํตํด ๋ถํ์ํ ์ ์ฅ์ ํ๊ณ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ผ๋ฉฐ ์ด๊ฒ์ ํด๊ฒฐํ์๋๋ ๋ฌธ์ ๋ฅผ ํต๊ณผํ ์ ์์๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] String, Date๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.02.06 |
---|---|
[programmers] JOIN๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.02.06 |
[programmers] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ - 2022 KAKAO BLIND RECRUITMENT (0) | 2022.01.18 |
[programmers] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ - 2022 KAKAO BLIND RECRUITMENT (0) | 2022.01.17 |
[programmers] GROUP BY๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.01.17 |