-
[프로그래머스] python lv2 타겟넘버프로그래머스_코딩테스트 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
반응형'프로그래머스_코딩테스트' 카테고리의 다른 글
[프로그래머스_SQL] 오랜기간 보호한 동물(1) (0) 2022.10.03 [프로그로머스] 코딩테스트 _뉴스 클러스트링 (0) 2022.09.27 [프로그래머스]Python 튜플 lv2 (0) 2022.09.17 [프로그래머스]Python lv2 최대값 최소값 (0) 2022.09.17 [프로그래머스_SQL] NULL 값 처리하기 (0) 2022.07.07