프로그래머스 | 타겟 넘버

Doyeon Kim·2023년 9월 20일

코딩테스트 공부

목록 보기
160/171

Problem Link : https://school.programmers.co.kr/learn/courses/30/lessons/43165


이전에 풀어보았지만 복습겸 + dfs, bfs 알고리즘 연습해보려고 다시 풀어보았다.

따지고보면 크게 어려운 점은 없는 문제였는데..
요즘 코.테 문제를 풀면서 느끼는건데 개인적으로 내가 생각한 것을 코드로 구현하는 과정에서 어려움을 느끼는 것 같다..

def solution(numbers, target):
    answer = 0
    
    leaves = [0]
    
    for num in numbers :
        temp =[]
        for leaf in leaves :
            temp.append(leaf + num)
            temp.append(leaf - num)
        leaves = temp
        
    for leaf in leaves :
        if leaf == target :
            answer +=1

    return answer
  1. numbers를 이용하여 조합할 수 있는 경우의 수를 임시로 temp에 넣어주고 이후 leaves에 넣어준다.
    이때 경우의 수는 numbers 에 있는 num을 더하거나 뺄 수 있는 두 가지 경우가 있다.

그래서 예를 들면
ex . numbers = [4, 1, 2, 1]
numbers에 4가 있다면
+4 , -4

그리고 그 다음 -1,+1
+4 + 1 , +4-1/ -4+1, -4-1
....
이런 식으로(그림으로 그려보면 더 이해가 감)
뻗어나가서 해당 문제는 dfs/bfs 를 이용하여 풀 수 있다..

2.leaves에 넣어준 경우의 수를 가지고 target과 일치해야 한다든 조건에 부합한 경우의 수를 count해 주고 해당 값을 반환한다.

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글