[알고리즘] 프로그래머스 2단계 - 타겟 넘버

minidoo·2020년 10월 30일
1

알고리즘

목록 보기
54/85
post-thumbnail
def solution(numbers, target):
    
    calculData = [0]
    
    for i in numbers:
        sub = []
        for j in calculData:
            sub.append(j+i)
            sub.append(j-i)
        calculData = sub

    answer = calculData.count(target)
    return answer

입출력 예

numbers = [ 1, 1, 1, 1, 1 ] / target = 3 / return = 5

풀이과정

  1. +, - 과정을 반복한다고 생각하면 된다. numbers의 개수만큼 더하고 빼고를 반복하기 때문에 numbers 배열로 for문을 돈다.
  2. calculData에 담긴 숫자에 +, - 를 반복해서 더하고 뺀다. sub라는 배열을 따로 만든 이유는 calculData 자체에 append를 하면 두 번째 for문을 돌면서 배열의 갯수가 변하기 때문이다.
  3. 계산을 마친 calculData에서 target 숫자의 개수를 구한 뒤 리턴한다.

참고

https://velog.io/@minidoo/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-BFS%EB%84%88%EB%B9%84%EC%9A%B0%EC%84%A0%ED%83%90%EC%83%89%EA%B3%BC-DFS%EA%B9%8A%EC%9D%B4%EC%9A%B0%EC%84%A0%ED%83%90%EC%83%89

0개의 댓글