
먼저 종료 조건이 안나왔기 때문에 while True를 사용하고 try ~ except 구문으로 종료를 시켜준다. a, b를 입력받고 a와 b 각각 중복을 제거해주는 set을 사용하여 중복을 제거해준다.
예를 들어a = pretty가 들어오면 { 'y', 'p', 't', 'e', 'r'} 이런식으로
a_set이 나오게 된다.
중복을 제거한후에 a와 b에서 and 즉 교집합을 한다. 이 설명은 x = a_set & b_set에 해당한다. 처음에 그냥 중복을 리스트에 넣고 정렬해서 출력만 하면 되지않나? 해서 풀었었는데 생각해보니 중복만 뽑아놓고 다시 갯수만큼 추가를 해줘야하는걸
안했다가 처음에 제출했는데 틀리고 그랬다.. a_count와 b_count의 갯수를 세어주고 min갯수만큼 answer리스트에 추가해주면 오류사항 없이 문제를 풀 수 있다!
# 1622
while True:
try:
a = input()
b = input()
a_set = set(a)
b_set = set(b)
x = a_set & b_set
answer = []
for i in x:
a_count = a.count(i)
b_count = b.count(i)
answer.append(i * min(a_count, b_count))
answer.sort()
print(''.join(answer))
except:
break
https://www.acmicpc.net/problem/1622