프로그래머스_코딩테스트

[프로그래머스] python lv2 타겟넘버

codingmemory 2022. 10. 3. 17:48

문제 설명

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

입출력 예 #1

[1, 1, 1, 1, 1] 3 5
[4, 1, 2, 1] 4 2

 

입출력 예 #2

+4+1-2+1 = 4
+4-1+2-1 = 4
  • 총 2가지 방법이 있으므로, 2를 return 합니다.
def solution(numbers, target) :
    answer = [0] # 초기 값
    for i in range(len(numbers)) :
        value = []
        for j in range(len(answer)) :
            value.append(answer[j] - numbers[i]) # 빼기
            value.append(answer[j] + numbers[i]) # 더하기

        answer = value
    #target에 해당하는 것만 가져온다
    result = answer.count(target)

    return result

 

[1,1,1,1,1] -> [1+1] [1-1] 이런 식으로 인자끼리 더하고 빼는 함수 생성

value값 받고 이걸 answer=[0]에 다 올려주면 [0+1+1],[0+1-1],[0-1+1],[0-1-1] 이런식으로 다시 저장

여기서 다시 +1, -1 등으로 반복해서 작용되면 출력 값 다음과 같이 생성됨

[5, 3, 3, 1, 3, 1, 1, -1, 3, 1, 1, -1, 1, -1, -1, -3, 3, 1, 1, -1, 1, -1, -1, -3, 1, -1, -1, -3, -1, -3, -3, -5]

그래서 target 값 카운트 해주면 됨

 

 

 

 

 

참조: https://train-validation-test.tistory.com/entry/Programmers-level-2-%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84-python
반응형