문제 확인
나의 풀이
- 공통된 숫자를 미리 확인한 뒤 필요한 숫자만 개수를 확인했다.
- 하지만 확인할 숫자의 개수가 10개 뿐이어서 굳이 그럴 필요는 없었던 거 같다.
- 0이 여러번 반복되는 문자열을 처리하기 위해서 정규 표현식을 사용 했다.
from collections import Counter
import re
def solution(X, Y):
answer = ""
# 문자열로 변경
X, Y = map(str, (X, Y))
# 공통 숫자 확인
com_num = sorted(set(X) & set(Y), reverse = True)
# 없을 경우 -1 리턴
if not com_num:
return "-1"
# 성분 개수 세기
cnt_X, cnt_Y = Counter(X), Counter(Y)
# 공통 문자 있는 경우
for i in com_num:
answer += str(i * min(cnt_X[i], cnt_Y[i]))
answer = "".join(answer)
# 0이 여러개인 경우 0으로 처리
answer = re.sub("^0+", "0", answer)
return answer
다른 사람 풀이
- 처음부터 9 ~ 0 순으로 숫자를 조회해서 answer의 성분이 내림차순으로 더해진다.
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