๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํƒ€๊ฒŸ ๋„˜๋ฒ„

๋ฌธ์ œ ์„ค๋ช…

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

 

ํ’€์ด1

answer = 0 

def calc(index, numbers, target, value):
    global answer;
    
    if(index==len(numbers)):
        if(value==target):
            answer += 1
            return
        return
            
    calc(index+1, numbers, target, value+numbers[index])
    calc(index+1, numbers, target, value-numbers[index])


def solution(numbers, target):
    global answer
    calc(0, numbers, target, 0)
    return answer

 

ํŒŒ์ด์ฌ์—์„œ return์€ ํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด๋‹ค. 

์ข…๋ฃŒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋ฌดํ•œ ์žฌ๊ท€๋ฅผ ๋Œ ๊ฒƒ์ด๋‹ค.

 

์ด ํ’€์ด์˜ ํ•ต์‹ฌ์€

1. ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ€๋‹ค๋Š” ๊ฒƒ์„, ์ด์ง„ํŠธ๋ฆฌ๋กœ ๋ณด๋Š” ๊ฒƒ

2. ์‚ฌ์น™์—ฐ์‚ฐ์„ ์ „์ฒด ๋…ธ๋“œ์˜ ๋ฐฉ๋ฌธ์œผ๋กœ ๋ณด๋Š” ๊ฒƒ

3. ์ธ๋ฑ์Šค์˜ ์ฆ๊ฐ€์™€, ๊ฐ’์ด ์—ฐ์‚ฐ์„, ๋งค๊ฒŒ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ–ˆ๋‹ค๋Š” ๊ฒƒ

 

 

ํ’€์ด2

def solution(numbers, target):
	if not numbers and target ==0 :
		reutrn 1
    elif not numbers :
    	return 0
    else return solution(numbers[1:],target+numbers[0])+solution(numbers[1:],target-numbers[0])

์ด ํ’€์ด์˜ ํ•ต์‹ฌ์€

๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ€ ๊ฐ’์˜ ํ•ฉ์ด target๊ณผ ๊ฐ™๋‹ค๋Š” ์‹์„ ์ดํ•ญํ•˜์—ฌ

target - sum = 0์œผ๋กœ ๋ณธ ๊ฒƒ.

 

 

ํ•˜๋ฃจ ์ง€๋‚œ ๋‚˜์˜ ํ’€์ด

answer = 0

def DFS(numbers, target, value):
    global answer;
    if not numbers:
        if value == target:
            answer +=1
        return
        
    else :
        DFS(numbers[1:], target, value+numbers[0])
        DFS(numbers[1:], target, value-numbers[0])
    
    
def solution(numbers, target):
    global answer;
    DFS(numbers, target,0)
    return answer

๊ตณ์ด ์ธ๋ฐ์Šค๋ฅผ ๋งค๊ฒŒ๋ณ€์ˆ˜๋กœ ์ค„ ํ•„์š” ์—†๋‹ค.

numbers[1:]๋กœ ์žฌ๊ท€ํ•˜๋ฉด ๋์€ ๋นˆ ๋ฐฐ์—ด์ด ๋‚จ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

1๋ฒˆ๊ณผ 2๋ฒˆ์„ ์งฌ๋ฝ•ํ•ด์„œ

์ง๊ด€์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ๋ชจ๋‘ ์ฑ™๊ฒผ๋‹ค.

 

์ตœ๋Œ€ํ•œ ํ’€์–ด๋ณธ ๋ฌธ์ œ๋ฅผ ์™ธ์›Œ์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋ณด๋‹ค, 

์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ค ์ถ”์ƒ์  ๊ตฌ์กฐ๋กœ ํ’€์—ˆ์ง€๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ ํ‘ผ ๊ฒฐ๊ณผ๋‹ค.

 

๋ฐ˜์‘ํ˜•