숫자 짝꿍

최민수·2023년 3월 10일
0

알고리즘

목록 보기
34/94
from collections import Counter

⭐️
def solution(X, Y):
    answer = []
    
    # 정수 개수
    countX, countY = Counter(X), Counter(Y)
    
    for i in range(10):
        val = min(countX[str(i)], countY[str(i)])
        for k in range(val):
            answer.append(str(i))
    
    answer.sort(reverse=True)
    ans = ''.join(answer)
    
    if ans == "":
        return "-1"
    if ans[0] == "0":
        return "0"
            
    return ans

아이디어는 매우 간단하지만 예외처리가 까다로운 문제

아이디어 자체는 Counter 를 사용해 문자열의 갯수를 세어주고 정렬한 뒤 다시 문자열로 합쳐주면 되는 문제이다.

그러나 예외처리를 할때, 공통된 정수의 자릿수가 최대 10^6이기 때문에 이걸 그대로 int로 바꿔서 ==0 비교를 한다던지, 결과를 반환하게 되면 자료형 범위를 넘어가고 시간초과가 뜰 확률이 매우 크다.

따라서, 최대한 문자열로 가지고 가야 되며 0 비교는 첫자리만 비교(answer[0] == 0) 해주면 된다. 왜냐하면 답이 0이 아닌 이상 다른 숫자가 0으로 시작할 수 없기 때문이다.

프로그래머스 연습문제, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글