프로그래머스_코딩테스트
[프로그래머스] 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
반응형