프로그래머스 코딩테스트/Python

[프로그래머스] 숫자 짝꿍 Python

Coding-Su 2024. 7. 5. 22:42
728x90

제목

[프로그래머스] 숫자 짝꿍

제출했던 답(오답)

def solution(X, Y):
    answer = ''
    numList = []
    flag = 0
    
    for i in range(0, 10):
        xcount = X.count(str(i))
        ycount = Y.count(str(i))
        if xcount != 0 and ycount != 0:
            numList.extend([i] * min(xcount, ycount) )
    
    
    if len(numList) == 0:
        answer = '-1'
    else:
        numList.sort(reverse=True)
        answer = str(int(''.join(map(str,numList))))

    return answer

위와 같이 코드를 작성했을때는 11번부터 15번까지 시간초과가 떴습니다.

원인을 알아보니 answer = str(int(''.join(map(str,numList)))) 이 부분 때문이었습니다. 

형변환을 str(int())이렇게 2번 연속으로 하면 시간이 매우 많이 소요되어 시간초과가 떴던 것이었습니다.

 

따라서 숫자 리스트를 만들어주고 0만 있는 경우를 any를 통하여 0을 return하도록 바꿔 형 변환을 줄여주어 시간을 단축하였습니다.

정답

def solution(X, Y):
    answer = ''
    num = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
    numList = []
    flag = 0
    
    for i in range(0, 10):
        xcount = X.count(str(i))
        ycount = Y.count(str(i))
        if xcount != 0 and ycount != 0:
            numList.extend([i] * min(xcount, ycount) )
    
    
    if len(numList) == 0:
        answer = '-1'
    else:
        if any(numList) == False:
            return "0"
        numList.sort(reverse=True)
        answer = ''.join(map(str,numList))

    return answer
728x90