본문 바로가기

알고리즘/프로그래머스

[프로그래머스]Lv.2 타겟넘버(Python)

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

 

프로그래머스

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

programmers.co.kr

 

문제 접근

 

새로운 리스트를 만들어 numbers의 원소 각각에 +, - 의 결과를 담고 target과 일치하는 개수를 카운팅

 

코드
def solution(numbers, target):
    answer = 0
    leaves = [0]

    for i in numbers:
        tmp = []
        for j in leaves:
            tmp.append(j + i)
            tmp.append(j - i)
        leaves = tmp
        print(leaves)

    for leaf in leaves:
        if leaf == target:
            answer += 1

    return answer

print(solution([1,1,1,1,1],3))

 

회고

 

자꾸 빈 리스트를 할당할 때, 이중 반복문이면 어디에 선언해야 할지 너무 헷갈린다.  

 

루프 내에서 tmp를 선언하면 numbers의 각 요소에 대한 새로운 반복마다 빈 리스트로 초기화되어(이전 결과와 무관하게!!) 현재 루프 반복에 관련된 조합을 정확하게 저장할 수 있다.