def solution(X, Y):
xy = list(set(list(X))&set(list(Y)))
x = {i:X.count(i) for i in xy}
for i in xy:
if x[i] > Y.count(i):
x[i] = Y.count(i)
num = []
for i,j in x.items():
n = [str(i)]*j
num += n
if num == []:
return "-1"
elif list(set(num)) == ["0"]:
return "0"
num.sort(reverse=True)
answer = ''.join(num)
return answer
풀이
X와 Y에서 겹치는 숫자를 뽑아서 그 숫자들로 만들 수 있는 가장 큰 수를 만드는게 문제다.
단순하게 intersection으로 해결하려고 했는데, 생각해보니 같은 수가 중복되어있을 때의 예외처리를 해야했다.
그래서 딕셔너리를 이용했고, 겹치는 숫자의 가장 적은 갯수를 찾았다. 그리고 reverse sort로 정렬 후 join으로 출력시키니 바로 해결되었다.