주어진 두 문자열 X, Y는 정수로 이루어진 문자열이다. 둘을 비교하여 서로 짝을 이루는 숫자들을 모은다. 모은 숫자들로 가장 큰 수를 만들어 return한다. 짝을 이루는 숫자가 없다면 "-1"을 return한다. 0은 두개 이상 짝을 이뤄도 "0"을 return한다.

def solution(X, Y):
from collections import Counter
counter_x = Counter(X)
counter_y = Counter(Y)
common = []
for digit in counter_x:
if digit in counter_y:
common.extend([digit] * min(counter_x[digit], counter_y[digit]))
if not common:
return "-1"
common.sort(reverse=True)
if common[0] == '0':
return "0"
return ''.join(common)
👉 : 두 문자열에서 공통으로 등장하는 숫자와 그 빈도수를 비교하여, 최소 빈도수만큼 common 리스트에 추가하는 코드

extend()메서드
✔ 다른 리스트나 iterable(반복 가능한 객체)의 요소들을 기존 리스트에 추가한다.
✔ append()와 다른 점
◾ append()는 리스트의 끝에 단일 요소를 추가한다.
◾ extend()는 리스트의 끝에 iterable의 모든 요소를 추가한다.# append() 예제 list1 = [1, 2, 3] list1.append([4, 5, 6]) print(list1) # 출력: [1, 2, 3, [4, 5, 6]] # extend() 예제 list1 = [1, 2, 3] list1.extend([4, 5, 6]) print(list1) # 출력: [1, 2, 3, 4, 5, 6]
리스트의 요소들을 하나의 문자열로 병합
collections 모듈의 Counter 클래스는 dictionary를 확장한 클래스로, 데이터의 개수를 셀 때 유용하다.
counter_x = Counter(X)
counter_y = Counter(Y)
각 문자열에서 각 숫자의 빈도수를 계산한다.

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
내가 제출한 코드와 비슷한 듯하지만 🟠 부분이나 🟢 부분의 아이디어가 다르다.
선생님이 출석부를 보고 출석을 부르시는데 이상하게 부르신다. 얼굴과 이름을 빨리 익히기 위해 학생들의 번호를 랜덤으로 부르고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 부르신다.
출석 번호를 n번 무작위로 불렀을 때, 각 학생의 번호(1~23)가 불린 횟수를 각각 출력해보자.
from collections import Counter
rollbook = []
n = int(input())
strange = input().split(' ')
counter_strange = Counter(strange)
list_counter_strange = list(counter_strange)
list_counter_strange.sort()
for i in range(1, 24):
if str(i) in list_counter_strange:
rollbook.append(str(counter_strange[str(i)]))
else:
rollbook.append('0')
answer = ' '.join(rollbook)
print(answer)
n = int(input())
a = input().split()
for i in range(n) :
a[i] = int(a[i]) # a에 순서대로 저장되어있는 각 값을 정수로 변환해 다시 저장
d = []
for i in range(24) :
d.append(0)
for i in range(n) : # 번호를 부를 때마다, 그 번호에 대한 카운트 1씩 증가
d[a[i]] += 1 # ⚪
for i in range(1, 24) : # 카운트한 값을 공백을 두고 출력
print(d[i], end=' ')
⚪ d\[a\[i\]\] += 1
2중 리스트 참조 : 만약 a[i]의 값이 1이었다면? d[1] += 1 이 실행되는 것이다. 1번 카운트 1개 증가