• [코테 연습] 타겟 넘버 Python

    2020. 6. 9. 12:15

    by. 위지원

    일주일동안 뭐하고 산거냐 위지원!!!!!!!!! 정신안차려!!!

     

    문제 설명

    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