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