프로그래머스 | 타겟 넘버 (Python)

2024. 10. 1. 12:23·ALGORITHM
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

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
'ALGORITHM' 카테고리의 다른 글
  • 프로그래머스 | 키패드 누르기 (Python)
  • 프로그래머스 | 스킬트리 (Python)
  • 어서와! 자료구조와 알고리즘은 처음이지? | 6강, 7강, 8강
  • 어서와! 자료구조와 알고리즘은 처음이지? | 1강, 2강, 3강, 4강, 5강
진미
진미
  • 진미
    ABC
    진미
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • PROJECT (3)
      • ALGORITHM (43)
      • STUDY (3)
        • 리액트 (7)
        • 파이썬 (2)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 설정
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
진미
프로그래머스 | 타겟 넘버 (Python)
상단으로

티스토리툴바