숫자 짝꿍 - Python
2024. 1. 25. 23:35ㆍ공부/📝 프로그래머스
1. 풀이 코드
def solution(X, Y):
X_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Y_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(0, 10):
X_list[i] = X.count(str(i))
Y_list[i] = Y.count(str(i))
answer = ''
for i in range(9, -1, -1):
if i != 0 or len(answer) != 0:
while X_list[i] != 0 and Y_list[i] != 0:
answer += f"{i}"
X_list[i] -= 1
Y_list[i] -= 1
elif i == 0 and (X_list[i] != 0 and Y_list[i] != 0):
answer = '0'
else:
answer = '-1'
return answer
return을 str(int(answer)) if answer != '' else "-1" 로 했더니 시간초과가 떠서 위와 같이 처리했습니다.
2. 다른 사람 풀이 코드
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
엄청 깔끔하네요. 멋진 발상입니다.
그런데 댓글에 이런 내용이 있네요.
from collections import Counter
def solution(X, Y):
X_counter = Counter(X)
Y_counter = Counter(Y)
answer = ''
for i in range(9, -1, -1):
count_i = min(X_counter[str(i)], Y_counter[str(i)])
answer += str(i) * count_i
if answer == '':
return '-1'
elif len(answer) == answer.count('0'):
return '0'
else:
return answer
댓글의 내용을 반영하면 위와 같이 작성할 수 있겠습니다.
'공부 > 📝 프로그래머스' 카테고리의 다른 글
대충 만든 자판 - Python (0) | 2024.01.28 |
---|---|
문자열 나누기 - Python (0) | 2024.01.27 |
로또의 최고 순위와 최저 순위 - Python (0) | 2024.01.24 |
[1차] 다트 게임 - Python (0) | 2023.12.13 |
실패율 - Python (0) | 2023.12.13 |