coding test - python/Programmers
Programmers / 타겟 넘버 (DFS) / Python 파이썬
sillon
2022. 8. 3. 23:33
728x90
반응형
*문제 출처는 프로그래머스에 있습니다.
문제 제목: 타겟 넘버 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이 (오답...)
def solution(numbers, target):
answer = 0
n = len(numbers)
ch = [0]*n
# v가 나타내는게
def DFS(v,n):
global answer # 전역변수로 사용
if v == n:
tmp = 0
for i in range(1, n):
if ch[i] == 1:
tmp += numbers[i]
else:
tmp -= numbers[i]
if tmp == target:
answer += 1
else:
ch[v] = 1
DFS(v+1)
ch[v] = 0
DFS(v+1)
DFS(1,n)
return answer
틀린이유: 인덱스 접근을 어떻게 해야할지 몰라서 대충 막 쳤다...
인덱스와 value전체를 고려하고 하자!
모범답안
answer = 0
def DFS(idx, numbers, target, value):
global answer
N = len(numbers)
if(idx== N and target == value):
answer += 1
return
if(idx == N):
return
DFS(idx+1,numbers,target,value+numbers[idx])
DFS(idx+1,numbers,target,value-numbers[idx])
def solution(numbers, target):
global answer
DFS(0,numbers,target,0)
return answer
728x90
반응형