(Lv.01) 숫자짝꿍👾
https://school.programmers.co.kr/learn/courses/30/lessons/131128
from collections import Counter
def solution(X, Y):
counter_x = Counter(map(int, X))
counter_y = Counter(map(int, Y))
common_elements = counter_x & counter_y
if not common_elements:
return "-1"
answer_list = [str(i) * count for i, count in sorted(common_elements.items())]
answer = ''.join(answer_list)[::-1]
if int(answer) == 0:
return "0"
return answer
시간 초과로 실패🫠
answer_list = [str(i) * count for i, count in sorted(common_elements.items())]
common_elements가 예를 들어 {2: 3, 1: 2, 3: 1}
이라고 가정하겠습니다. 이는 숫자 2가 세 번, 1이 두 번, 3이 한 번 등장한다는 것을 의미합니다.
먼저 common_elements.items()를 호출하면 다음과 같은 (키, 값) 튜플들의 리스트를 얻습니다.
[(2, 3), (1, 2), (3, 1)]
다음으로 이 리스트에 sorted() 함수를 적용하면 키 값을 기준으로 정렬된 새로운 리스트를 얻습니다.
[(1, 2), (2, 3), (3, 1)]
마지막으로 이 정렬된 리스트에 대해 리스트 컴프리헨션을 수행합니다. 각 튜플 (i, count)에 대해 문자열 'i' count를 생성합니다.'i' count는 문자열 'i'를 count번 반복한 새로운 문자열을 생성하는 것입니다.
결과는 다음과 같은 문자열들의 리스트가 됩니다.
['11', '222', '3']
from collections import Counter
def solution(X, Y):
# 숫자 개수 세기
nums = Counter(X) & Counter(Y)
if not nums: return '-1' # 공통 없는 경우
elif list(nums) == ['0']: return '0' # 0만 공통인 경우
nums_order = sorted(list(nums),reverse=True) # 내림차순 정렬
answer = ''
for num in nums_order:
answer += num * nums[num]
return answer