728x90
programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
# 나의 코드
import itertools
def solution(numbers, target):
idx = [i for i in range(len(numbers))]
answer = 0
for i in range(len(numbers)):
minus = list(itertools.combinations(idx,i+1))
for j in range(len(minus)):
result = 0
for k in range(len(numbers)):
if k in minus[j]:
result -= numbers[k]
else:
result += numbers[k]
if result == target:
answer += 1
return answer
# 참고
from itertools import product
def solution(numbers, target):
l = [(x, -x) for x in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
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
반응형
'전.py' 카테고리의 다른 글
프로그래머스 숫자의 표현 (level 2) (0) | 2021.01.11 |
---|---|
직사각형의 꼭짓점 3개 주어질 때 나머지 점의 좌표 구하기 (0) | 2021.01.11 |
프로그래머스 카펫 (level 2) (0) | 2021.01.09 |
정수 내림차순으로 정렬 (0) | 2021.01.07 |
숫자 입력받아 역순으로 출력 (0) | 2021.01.07 |