-
일주일동안 뭐하고 산거냐 위지원!!!!!!!!! 정신안차려!!!
문제 설명
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 함수를 작성해주세요.
cnt = 0 def solution(numbers, target): n = len(numbers) calRes = [1 for _ in range(n)] def cal(resArr, idx): if idx < len(resArr): resArr[idx] *= 1 cal(resArr, idx + 1) #계속 탐색하게 하고,, resArr[idx] *= -1 cal(resArr, idx + 1) else: #하나의 탐색이 끝났을 땐 count를 올려주고,, if sum(resArr) == target: global cnt #cnt를 solution 함수 안에서 선언 했으면 nonlocal로 ㄱㄱ cnt += 1 cal(calRes, 0) return cnt
예제에서 주어진 케이스는 통과했다.. 헌데
????????????????
n개의 음이 아닌 정수가 있습니다.
또 문제 제대로 안읽었다.. 하 그냥 뛰어내려야지
calRes = [i for i in numbers]
이 부분만 변경했다. 통과 ,,
고득점의 비결은,, 문제를 꼼꼼히 읽는데서 시작한Da,..
근데 +1과 -1을 바꾸어주는 곳의 위치가 변경되면 결과가 다르게 나온다
- +1을 먼저 위치하고 recursive를 한 경우 => 5
- -1을 먼저 위치하고 recursive를 한 경우 => 2
resArr[idx] *= - 1 cal(resArr, idx + 1) resArr[idx] *= 1 cal(resArr, idx + 1) ==> 2 resArr[idx] *= 1 cal(resArr, idx + 1) resArr[idx] *= - 1 cal(resArr, idx + 1) ==> 5
입력값 〉 [1, 1, 1, 1, 1], 3 기댓값 〉 5 실행 결과 〉 실행한 결괏값 2이(가) 기댓값 5와(과) 다릅니다. 아,, -1을 처음에 곱해버리믄 맨 앞 정수가 -가 되는데 그러면 +1을 아무리 곱해도 계속 -정수로 남아있어서 그런건가..! 결과를 출력했을 때 보면 그렇다 앞에가 처음에 -1로 시작하니까 끝날때까지 -1이다. 이해력 딸리는 위지원이 또 ,,
'2020년 > 코테' 카테고리의 다른 글
[코테 연습] 단어 변환 Python (0) 2020.06.18 [코테 연습] 네트워크 Python (0) 2020.06.16 [코테 연습] 포도주 시식 Python (0) 2020.05.29 [코테 연습] 정수 삼각형 Python (0) 2020.05.28 [코테 연습] 퇴사 PYthon (0) 2020.05.27