์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS)
<๋คํธ์ํฌ>
๋ฌธ์ ์ค๋ช
๋คํธ์ํฌ๋ ์ปดํจํฐ ์ํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๊ณ , ์ปดํจํฐ B์ ์ปดํจํฐ C๊ฐ ์ง์ ์ ์ผ๋ก
์ฐ๊ฒฐ๋์ด ์์ ๋ ์ปดํจํฐ A์ ์ปดํจํฐ C๋ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ ๋ณด๋ฅผ ๊ตํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ปดํจํฐ A, B, C๋ ๋ชจ๋ ๊ฐ์ ๋คํธ์ํฌ ์์ ์๋ค๊ณ ํ ์ ์์ต๋๋ค.
์ปดํจํฐ์ ๊ฐ์ n, ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด computers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋คํธ์ํฌ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
์ ํ ์ฌํญ
- ์ปดํจํฐ์ ๊ฐ์ n์ 1 ์ด์ 200 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๊ฐ ์ปดํจํฐ๋ 0๋ถํฐ n-1์ธ ์ ์๋ก ํํํฉ๋๋ค.
- i๋ฒ ์ปดํจํฐ์ j๋ฒ ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด computers [i][j]๋ฅผ 1๋ก ํํํฉ๋๋ค.
- computer [i][i]๋ ํญ์ 1์ ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
def visit(i, computers, visited):
visited[i] = True # ๋ฐฉ๋ฌธ
for j in range(len(computers)):
if computers[i][j] == 1 and visited[j] == False: # ์ฐ๊ฒฐ ๋์ด์์ผ๋ฉฐ ๋ฐฉ๋ฌธํ ์ ์ธ ์๋ค๋ฉด
visit(j, computers, visited)
def solution(n, computers):
answer = 0
visited = [False for i in range(n)] # ์ด๊ธฐํ
for i in range(n):
if visited[i] == False: # ์์ง ๋ฐฉ๋ฌธํ ์ ์ด ์๋ค๋ฉด
visit(i, computers, visited) # ๋ฐฉ๋ฌธ
answer += 1 # ๋คํธ์ํฌ
return answer
๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ๊ฑด๋๋ฆฌ์ง๋ ๋ชปํ ๋ฌธ์ ์ด๋ค.
๊น์ด/๋๋น ์ฐ์ ํ์์ด๋ ๋ง์์๋ถํฐ ๊ฒ์ 1์ฐจ๋ก ๋จน์์ผ๋ฉฐ, ์์ ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒฐ๊ตญ ๋ ์๋์กฐ์ฐจ ํ์ง ๋ชปํ๊ณ ๊ฒ์์ ๋ค์ด๊ฐ๋ค.
ํญ์ dfs, bfs์ ์ ์๋ฅผ ๋ด๋ ๋ฌธ์ ์ ์ ์ฉํ๊ธฐ๋ ์ด๋ ค์ ๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ์กฐ๊ธ์ฉ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉํฅ๊ณผ ์ฝ๋์ ํ๋ฆ์ ์๊ฒ ๋์๊ณ
๋ค์ ์ฝ๋๋ฅผ ๊ตฌํํด๋ณด์๋ค.
1) visited list_False๋ก ์ด๊ธฐํ๋ฅผ ํตํด ๋ฐฉ๋ฌธ ์ฌ๋ถ check
2) ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ฐฉ๋ฌธ ์ฌ๋ถ check
2-1) ๋ฐฉ๋ฌธํ ์ ์ด ์๋ค๋ฉด dfsํจ์๋ก ์ด๋
2-2) ๋คํธ์ํฌ ๊ฐ์ +1
3) visit ํจ์
๋งค๊ฐ๋ณ์) ํ์ฌ ๋ฐฉ๋ฌธ ๋ ธ๋, ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด, ๋ฐฉ๋ฌธ check list
3-1) ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก True๋ก ๋ณํ
3-2) ๋ฐ๋ณต๋ฌธ์ ํตํด ์ฐ๊ฒฐ์ด ๋์ด์์ผ๋ฉฐ, ๋ฐฉ๋ฌธํ ์ ์ด ์๋ค๋ฉด visit ํจ์ ํธ์ถ
์๊ฐ๐ค
๋งค๋ฒ ํ๊น ๋ง๊น ํ๋ค๊ฐ ์ธ๋ฉฐ ์์ํ ๋ฌธ์ ์ด๋ค.
๋ช๋ช ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ดค์ง๋ง ๋น์ทํ ๊ฒ๋ ์๊ณ ๋ค๋ฅธ ๊ฒ๋ ์์๋ค.
์ ๊ฐ์ dfs์ธ๋ฐ ๋ค๋ฅผ๊น ๋ผ๋ ์๊ฐ์ด ์์ง๋ ๋ ๋ค.
์ด์ ๋ ๋ชจ๋ฅด๋ ๊ฒ์ ์์ง ๋ด๊ฐ dfs๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด ์๋๊น๋ผ๊ณ ์๊ฐํ๋ค
์กฐ๋ง๊ฐ dfs, bfs๋ฅผ ๊ณต๋ถํด์ ์์ ํ ๋ด ํ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ํ์ด๋ณผ ๊ฒ์ด๋ค.
๊ณง dfs, bfs ์์ ์ ๋ณตํ๊ธฐ๋ฅผ ๐คจ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] [3์ฐจ] ์์ถ - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.28 |
---|---|
[programmers] ์์ ๊ฒ์ - 2021 KAKAO BLIND RECRUITMENT (0) | 2021.09.14 |
[programmers] ๋ฒ ์คํธ์จ๋ฒ (0) | 2021.09.10 |
[programmers] ๋ฐฉ๋ฌธ ๊ธธ์ด - Summer/Winter Coding(~2018) (0) | 2021.09.09 |
[programmers] [3์ฐจ] n์ง์ ๊ฒ์ - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.08 |