ํ๋ก๊ทธ๋๋จธ์ค์ ์ฝ๋ฉ์ฐ์ต ์ค level2์ DFS/BFS ์นดํ ๊ณ ๋ฆฌ์ "ํ๊ฒ๋๋ฒ" ๋ฌธ์ ํ์ด
(๋ฌธ์ : ์๋ ๋งํฌ๐๐๐)
๋ฌธ์ ํ์ด
์ฒ์ ์ ๊ทผ ๋ฐฉ์ (์ ํ์ฑ 75%, ํ ์ผ 1,2๋ฒ ์๊ฐ์ด๊ณผ๋ก ํต๊ณผ ๋ชปํจ)
๋์ ๊ฒฝ์ฐ๋ ์ฒ์ ๋ ํ ์ผ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
์ ๊ทผ ๋ฐฉ์์ ์ฃผ์ด์ง numbers ๊ธธ์ด๋งํผ '+','-'๋ก ๊ฐ์ง ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด์ ์์ฑํด์ฃผ๊ณ ์ด๋ฅผ numbers์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ด์๋ค. (itertools์ productํจ์๋ฅผ ์ฌ์ฉ)
์๋ฅผ ๋ค์ด, [4,1,2,1] ๊ฐ numbers๋ก ์ฃผ์ด์ง๋ค๋ฉด,
'+'์ '-'๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด๊ฐ 4๊ฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ค.
('+', '+', '+', '+') ('+', '+', '+', '-') ('+', '+', '-', '+') ('+', '+', '-', '-') ('+', '-', '+', '+') ('+', '-', '+', '-') ('+', '-', '-', '+') ('+', '-', '-', '-') ('-', '+', '+', '+') ('-', '+', '+', '-') ('-', '+', '-', '+') ('-', '+', '-', '-') ('-', '-', '+', '+') ('-', '-', '+', '-') ('-', '-', '-', '+') ('-', '-', '-', '-')
๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฐ๊ฐ์ numbers์ element ๊ฐ๊ฐ๊ณผ concatํ๊ณ string์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ evalํจ์๋ฅผ ํตํด ๊ทธ ๊ฐ์ด target๊ณผ ๊ฐ์์ง ์๋์ง ํ๋จ..!
############# ์ ํ์ฑ : 75% #############
from itertools import product
def solution(numbers, target):
numbers = list(map(lambda x :str(x), numbers))
cnt = 0
for i in product('+-', repeat=len(numbers)) :
concat = list(map(str.__add__,i,numbers))
if eval("".join(concat)) == target :
cnt += 1
return cnt
์ฌ์ค ์์ ํ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๊ฒ์ด๋ผ ํ๋ฆฐ ๋ฐฉ๋ฒ์ด๋ผ ํ ์๋ ์์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ ๊ฒ์ ๋ณด์ ํจ์จ์ ์ด์ง ๋ชปํ ์ฝ๋์ธ ๊ฒ.
๋๋ฒ์งธ ์ ๊ทผ ๋ฐฉ์ (์ ํ์ฑ 100%)
dfs/bfs ์นดํ ๊ณ ๋ฆฌ ๋ฌธ์ ์ธ๋ฐ ์์ ํ์์ผ๋ก ํผ๊ฒ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ ๊ฐ์ dfs/bfs๋ฐฉ์์ผ๋ก ์ ๊ทผํด๋ดค๋ค.
########## ์ ํ์ฑ 100% ##########
def solution(numbers, target):
global cnt
cnt = 0
def dfs(idx,res) :
global cnt
if idx == len(numbers) :
if res == target :
cnt += 1
return 0
res1 = res + numbers[idx]*1
dfs(idx+1,res1)
res2 = res + numbers[idx]*(-1)
dfs(idx+1,res2)
dfs(0,0)
return cnt
์ธ๋ฒ์งธ ์ ๊ทผ ๋ฐฉ์ (์ ํ์ฑ 100%)
itertools์ productํจ์๋ฅผ ์ข ๋ "์" ํ์ฉํด๋ดค๋ค.
######### ์ ํ์ฑ 100% #########
from itertools import product
def solution(numbers, target):
cnt = 0
num_lst = [[+x,-x] for x in numbers]
for i in product(*num_lst) :
if sum(i) == target :
cnt += 1
return cnt
ํ์ด๋ฅผ ์์๋ฅผ ๋ค์ด ํด๋ณด์.
numbers = [1,2,3]์ผ๋ก ์ฃผ์ด์ง๋ค๊ณ ํ์.
num_lst = [[1, -1], [2, -2], [3, -3]] ๊ฐ ๋๋ค.
์ฌ๊ธฐ์ ๊ด๊ฑด์ ์ฐ๋ฆฌ๋ num_lst์์ ์๋ ๊ฐ list๋ค์์ ์์๋ฅผ ํ๋์ฉ ๋ฝ์์ ์กฐํฉํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ํด itertools์ productํจ์๋ฅผ ์ฌ์ฉํ์๊ณ *operator๋ฅผ ์ฌ์ฉํด์คฌ๋ค.
๋ฐ๋ผ์ product(*num_lst)๋ฅผ ํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
(1, 2, 3)
(1, 2, -3)
(1, -2, 3)
(1, -2, -3)
(-1, 2, 3)
(-1, 2, -3)
(-1, -2, 3)
(-1, -2, -3)
์ด ๊ฐ ๊ฒฐ๊ณผ๋ฌผ๋ค์ sumํ์ฌ target๊ณผ ๋น๊ตํ๋ฉฐ ๋ต์ ๊ตฌํ๋ ๊ฒ...!
๋ด๊ฐ ์ ์ํ ์ฌ๋ฌ ์ฝ๋๋ค๊ณผ ์ ๊ทผ๋ฐฉ์์ด ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉด์..!! ๋ง์น๋ค ๐
'๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค > DFS & BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1012] [dfs/bfs] ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2021.04.29 |
---|---|
[๋ฐฑ์ค 1012] [dfs/bfs] ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2021.04.24 |
[๋ฐฑ์ค 2667] [dfs/bfs] ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2021.04.23 |
[๋ฐฑ์ค 2178] [dfs/bfs] ๋ฏธ๋กํ์ (0) | 2021.04.23 |
[๋ฐฑ์ค 1260] [dfs/bfs] BFS์ DFS โ (0) | 2021.04.23 |
[๋ฐฑ์ค 2606] [dfs/bfs] ๋ฐ์ด๋ฌ์ค (0) | 2021.04.22 |
[๋ฐฑ์ค 2331] [dfs] ๋ฐ๋ณต์์ด (0) | 2021.04.22 |