ol-rlo-zl
[프로그래머스 lv2] 타겟 넘버 - 파이썬(Python) 본문
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
1. 재귀함수 이용
def recursive(numbers, target, summ):
if numbers == []:
if summ == target:
return 1
else:
return 0
return recursive(numbers[1:], target, summ + numbers[0]) + recursive(numbers[1:], target, summ - numbers[0])
def solution(numbers, target):
return recursive(numbers, target, 0)
2. DFS 이용
def solution(numbers, target):
global answer
answer = 0
def dfs(i, summ):
if i == len(numbers):
if summ == target:
global answer
answer += 1
return
dfs(i+1, summ + numbers[i])
dfs(i+1, summ - numbers[i])
dfs(0,0)
return answer
3. BFS 이용
def solution(numbers, target):
summ = [0]
answer = 0
for n in numbers:
cur = []
for s in summ:
cur.append(s + n)
cur.append(s - n)
summ = cur
for s in summ :
if s == target :
answer += 1
return answer
4. 중복 순열 product 라이브러리 이용
from itertools import product
def solution(numbers, target):
l = [(n, -n) for n in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
'Programmers(Python)' 카테고리의 다른 글
[프로그래머스 lv2] k진수에서 소수 개수 구하기 - 파이썬(Python) (0) | 2023.03.27 |
---|---|
[프로그래머스 lv2] 전화번호 목록 - 파이썬(Python) (0) | 2023.03.27 |
최대공약수(gcd)와 최소공배수(lcm) - 파이썬(Python) (0) | 2023.03.26 |
[프로그래머스 lv2] n^2 배열 자르기 - 파이썬(Python) (0) | 2023.03.22 |
[프로그래머스 lv2] 튜플 - 파이썬(Python) (0) | 2023.03.22 |