์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS)
<ํ๊ฒ ๋๋ฒ>
๋ฌธ์ ์ค๋ช
n๊ฐ์ ์์ด ์๋ ์ ์๊ฐ ์์ต๋๋ค. ์ด ์๋ฅผ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์ ์์ต๋๋ค.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
์ฌ์ฉํ ์ ์๋ ์ซ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ํ๊ฒ ๋๋ฒ target์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์ซ์๋ฅผ ์ ์ ํ ๋ํ๊ณ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ์ฃผ์ด์ง๋ ์ซ์์ ๊ฐ์๋ 2๊ฐ ์ด์ 20๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ ์ซ์๋ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ํ๊ฒ ๋๋ฒ๋ 1 ์ด์ 1000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
def solution(numbers, target):
answer = 0
root=[0] #์ฒ์ 0๋ถํฐ ์์
for i in numbers: #numbers์์ ์ซ์๋ฅผ ๋ฐ์์ root๊ฐ์ ๋ํด์ฃผ๊ณ ๋นผ์ฃผ๋ ๊ฒฝ์ฐ์ ์
temp=[]
for j in root:
temp.append(j+i)
temp.append(j-i)
root=temp #temp๊ฐ์ root๋ก ๋ง๋ค์ด์ค
answer=temp.count(target) #์ต์ข
๊ฒฐ๊ณผ ๊ฐ์์ ์ํ๋ target ๊ฐ์ด ๋ช๊ฐ ์๋์ง ํ์ธ
return answer
1) root๋ฅผ 0 ํ๋ ๋๋๋ก ์ค์
2) numbers์ ์ซ์๋ฅผ ํ๋ ๋ฐ์์ root์ ํจ๊ป ๊ณ์ฐํด์ค์ผ ํจ
2-1) ์๋ก์ด ๋ฆฌ์คํธ ์ ์ธ
2-2) root์ ๊ฐ๊ณผ ๊ณ์ฐํ ํ ๋ฆฌ์คํธ์ ๋ฃ๊ณ root์ ๋์
3) temp๋ฆฌ์คํธ์ ์ํ๋ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ํ์ธ
์๊ฐ๐ค
์ฒ์์ ๊น์ด/๋๋น ์ฐ์ ํ์ ๋ฌธ์ ๋ผ๊ณ ํด์ ๊ฒ๋ถํฐ ๋จน์๋ ๋ฌธ์ ์ด๋ค.
์ฌ์ค ์์ ๋ถํฐ ๋ช๋ฒ์ด๋ ์ด ๋ฌธ์ ๋ฅผ ๋ดค์ง๋ง ๋ชจ๋ฅด๋ ์ฒ ๋๊ธฐ๊ธฐ๐ฅ
์ด๋ฒ์ ํ๋ฒ ํ์ด๋ณด์ ํด์ ๋ดค์ง๋ง ์ ๋ชจ๋ฅด๊ฒ์จ์..๐ ๊ฒฐ๊ตญ ๊ฒ์์ ํ์ ์กฐ๊ธ ๋น๋ ธ๋ค๐ต
์ค๋ช ์ ๋ดค๋๋ฐ ์๋, ์ด๊ฒ ์ด๋ ๊ฒ ์ฌ์ด ๋ฌธ์ ์๋ค๊ตฌ?๐คจ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] ์ด์ค์ฐ์ ์์ํ (0) | 2021.08.25 |
---|---|
[programmers] ์ ์ ์ผ๊ฐํ (0) | 2021.08.23 |
[programmers] ์ ๊ท ์์ด๋ ์ถ์ฒ - 2021 KAKAO BLIND RECRUITMENT (0) | 2021.01.27 |
[programmers] [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.19 |
[programmers] [1์ฐจ] ์บ์ - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.19 |