[파이썬 / Algorithm] 프로그래머스 연습문제 level2 - 타겟 넘버

waterlyn·2022년 5월 1일
0
post-thumbnail

문제

문제 바로가기

풀이

우선 문제의 카테고리가 DFS/BFS 라는 것을 알아버려서 이왕 이렇게 된 거 딱 정석에 맞는 해결법을 찾아보려고 했다!

이 문제를 풀 수 있었던 가장 핵심은 주어진 리스트의 각 원소의 양수와 음수값을 모두 더해보고 마지막 연산 결과들 중에 타겟에 해당하는 값의 개수를 리턴한다는 것이다.

예를 들어, [1, 1, 1] 이라는 값을 받았다고 해보자.

연산값을 저장할 배열에 가장 처음에는 첫 원소의 음수, 양수값을 넣는다.

array = [1, -1]

그리고 주어진 배열의 다음 값을 가져와 그 것의 양수, 음수값을 더한 것을 배열에 저장한다.

그러면 배열의 값은 다음과 같이 변한다.

array = [2, 0, 0, -2]

전달받은 배열을 차례대로 순회하여 얻은 마지막 배열의 값에서 count 함수를 사용하여 타겟에 해당하는 값의 개수를 리턴해주면 정답을 맞출 수 있다!

코드

def solution(numbers, target):
    array = []
    for num in numbers:
        if array == []:
            array = [num, -num]
        else:
            tmp = []
            for x in array:
                tmp.append(x+num)
                tmp.append(x-num)
            array = tmp

    return array.count(target)

엄청 어려운 문제가 아니었지만 로직을 쉽게 생각해내고 풀어낸 것에 아주 뿌듯했당 ㅎㅎ 😆

profile
Hello there 🖤

0개의 댓글