https://school.programmers.co.kr/learn/courses/30/lessons/131128
def solution(X, Y):
result = ''
a = [0,0,0,0,0,0,0,0,0,0]
b = [0,0,0,0,0,0,0,0,0,0]
for i in X: # X에 0~9까지 숫자가 몇개 있는지 count
value = int(i)
a[value] += 1
for i in Y: # Y에 0~9까지 숫자가 몇개 있는지 count
value = int(i)
b[value] += 1
for i in range(9, -1, -1): # 9~0까지 count한 수 중에서 최소값을 result에 추가
result += str(i) * min(a[i],b[i])
if(len(result) == 0): # ''이면 '-1' 반환
return '-1'
if(result[0] == '0'): # 000이더라도 '0' 반환
return '0'
return result
def solution(X, Y):
answer = ''
x = list(X)
x.sort(reverse = True)
for i in x:
for j in Y:
if j == i: # 같은 경우 answer에 추가 및 *로 대체
answer += i
Y = Y.replace(j, "*", 1)
break
if answer == '':
return "-1"
return str(int(answer))
from collections import Counter
def solution(X, Y):
x, y = list(X), list(Y)
arr = []
answer = ""
c_x, c_y = Counter(x) , Counter(y)
for key in c_x.keys(): # counter 키 값 추출
if key in c_y.keys(): # 키 중에 값이 최소인 것을 arr에 추가
arr.append((int(key), min(c_x[key], c_y[key])))
if not arr:
return "-1"
elif len(arr) == 1 and arr[0][0] == 0:
return "0"
arr = sorted(arr, key = lambda x : x[0], reverse= True) # 키 값으로 내림차순 정렬
for ar in arr:
answer += str(ar[0]) * int(ar[1]) # 키 * 값 만큼 answer에 추가
return answer
Counter를 사용하니 약 5배정도 빨라졌다.