BOJ - 1622(파이썬)

Lee Do Kyung·2024년 7월 3일

Boj

목록 보기
2/12

알고리즘

  • 문자열
  • 정렬

풀이:

먼저 종료 조건이 안나왔기 때문에 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

깃허브 링크:

https://github.com/dbzoseh2rl

profile
유능한 Backend 개발자가 되기위해 열심히 하겠습니다!

0개의 댓글