프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘 고득점 키트 dfs/bfs 유형의 문제인데 그냥 combinations 써서 풀었다..
내 코드
from itertools import product
def solution(numbers, target):
count = 0
length = len(numbers)
for ops in product('-+', repeat=length):
tmp = 0
for i, op in enumerate(ops):
if op == '-':
tmp -= numbers[i]
else:
tmp += numbers[i]
if tmp == target:
count += 1
return count
dfs 활용 코드
def solution(numbers, target):
def dfs(index, current_sum):
# 모든 숫자를 다 사용한 경우
if index == len(numbers):
# 현재 합계가 목표 값과 같은지 확인
return 1 if current_sum == target else 0
# 현재 숫자를 더하는 경우와 빼는 경우 두 가지로 나눠서 탐색
add = dfs(index + 1, current_sum + numbers[index])
subtract = dfs(index + 1, current_sum - numbers[index])
# 두 가지 경우의 합을 리턴
return add + subtract
# DFS 시작: 첫 번째 숫자부터 시작해서 탐색
return dfs(0, 0)
반응형
'ALGORITHM' 카테고리의 다른 글
프로그래머스 | 키패드 누르기 (Python) (0) | 2024.10.01 |
---|---|
프로그래머스 | 스킬트리 (Python) (0) | 2024.10.01 |
어서와! 자료구조와 알고리즘은 처음이지? | 6강, 7강, 8강 (0) | 2024.09.30 |
어서와! 자료구조와 알고리즘은 처음이지? | 1강, 2강, 3강, 4강, 5강 (3) | 2024.09.24 |
프로그래머스 | 2022 KAKAO BLIND RECRUITMENT | 신고 결과 받기 (Python) (1) | 2024.09.21 |