ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ2. ํ์ผ ๋๋ฒ <์ค๋ต๋ ธํธ>
https://school.programmers.co.kr/learn/courses/30/lessons/43165
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
์ฌ์ธ ์ค ์์๋๋ฐ ์๊ฐ๋ณด๋ค ์ด๋ ค์์ ๊ตฌํํ์ง ๋ชปํ๋ค..ใ ใ
์ง์ง ์ธ์ ์ฏค ๋ ๋ฒจ2๋ ๋ ๊ฐ๊ณ ํ ์ ์์๊น
๋ค๋ฅธ ๋ถ๋ค์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์๋ค. ๋์ค์ ๋ค์ ํ์ด๋ณผ ์์ ์ด๋ค.
from itertools import product
def solution(numbers, target):
length = len(numbers)
# ์ ์ฒด ๊ฐ๋ฅํ case ๊ตฌํ๊ธฐ
cases = list(product([-1, 1], repeat = len(numbers)))
print(cases)
# target ์ธ ๊ฒฝ์ฐ๋ง count ํ๊ธฐ
cnt = 0
for case in cases:
sum = 0
for i in range(len(numbers)): #0~4
sum += case[i] * numbers[i]
if sum == target :
cnt += 1
return cnt
product์ ๊ณฑํฉ์ ์ด์ฉํ ํ์ด์ด๋ค. ๋นํจ์จ์ ์ธ ์ฝ๋์ด๊ธด ํ์ง๋ง, ๋ด๋ถ ํจ์ ๊ธฐ๋ฅ์ ์ ์ด ๊ฒ ๊ฐ์์ ๊ฐ์ ธ์๋ค.
๋๋ ์ ์ฝ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก product๋ฅผ ์ด์ฉํด [1,1,1,1,1] ๋ถํฐ [-1,-1,-1,-1,-1] ๋ฑ๋ฑ์ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๊ตฌํ์ง๋ง, ์ด๋ป๊ฒ ์ ๊ทผํด์ผํ ์ง ๊ฐ์ด ์กํ์ง ์์๋ค.
๋ณด๋๊น, ์ด์ค๋ฐ๋ณต๋ฌธ ์์ i๋ฅผ case[i] number[i]์ ๋ชจ๋ ๋ฃ์ด์ค์ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๋ค ๋๊ฒ ํ์๋ค.
์ ์ด๊ฑธ ์ด๋ค ์์ผ๋ก ์ ์ด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค...........
๋๋ ์ด์ค๋ฐ๋ณต๋ฌธ ์์๋ฅผ case[i]์ numbers[j]๋ก ์ ๊ทผํ์๋๋ฐ, ๊ทธ๋ผ numbers๊ฐ 1์ฉ ์ฆ๊ฐ๋ ๋, case๋ ์์ง์ด์ง ์๋๋ค. ์ฆ, case๊ฐ 0์ผ๋, numbers๊ฐ 0~5๊น์ง ๋ค ๋๊ฒ ๋ผ์ ์คํจํ์๋๋ฐ,
๊ทธ๋ฅ ๋ ๋ค j๋ฅผ ๋ฃ์ผ๋ฉด ๋์๋ค.....
์ด์ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์๋ณด์.
dfs/bfs๋ฅผ ์ด์ฉํ๋ค.
def solution(numbers, target):
super = [0]
for i in numbers:
sub = []
for j in super:
sub.append(j+i)
sub.append(j-i)
super = sub #์ํผ๋
ธ๋๋ก ์ค์
return super.count(target)
๋๋ฐ์ด๋ค.........
๋ด๊ฐ ์ด๊ฑธ ์๊ฐํด๋ผ ์ ์์๊น...?
์ดํดํ๋๋ฐ๋ ํ ์ฐธ ๊ฑธ ๋ ธ ๋ค . . .