from collections import Counter
def solution(X, Y):
answer = []
xx = Counter(X)
yy = Counter(Y)
for key in xx.keys():
if key in yy.keys():
for x in range(min(xx[key], yy[key])):
answer.append(key)
if len(answer) == 0:
return "-1"
if answer[0] == "0":
return "0"
answer.sort(reverse=True)
result = ''.join(str(x) for x in answer)
return result
처음에 테스트 케이스가 다 맞아서 제출 했을 때는 시간초과로 실패했었는데,
qna를 찾아보니 "00000....00000" 이 이런식으로 매우 길어지는 경우가 발생!
이 경우 0밖에 없으면 answer[0] == "0" 이므로 ("0"으로 해야지 0으로 하면 안됨) 원래 조건식 int(result)==0에서 이렇게 고쳤더니 통과는 시켰지만..
테스트 11 〉 통과 (790.21ms, 75.3MB)
테스트 12 〉 통과 (846.41ms, 68.8MB)
테스트 13 〉 통과 (758.66ms, 75.6MB)
테스트 14 〉 통과 (821.11ms, 68.7MB)
테스트 15 〉 통과 (822.83ms, 68.7MB)
성능이 💩임
def solution(X, Y):
answer = ''
for i in range(9,-1,-1) :
answer += (str(i) * min(X.count(str(i)), Y.count(str(i))))
if answer == '' :
return '-1'
elif len(answer) == answer.count('0'):
return '0'
else :
return answer
테스트 11 〉 통과 (86.92ms, 27.6MB)
테스트 12 〉 통과 (86.00ms, 27.6MB)
테스트 13 〉 통과 (86.18ms, 27.6MB)
테스트 14 〉 통과 (81.49ms, 27.7MB)
테스트 15 〉 통과 (84.86ms, 27.5MB)
1/10로 시간을 줄이고 반 이상 메모리 사용도 줄였다.
어차피 숫자는 0~9 열개 밖에 없으니까 for i in range(9,-1,-1): 로 룹을 돌면 된다