[BOJ] 백준 16890번: 창업
1일 1PS 14일차!
📚 문제
골드 1
- 단순하게 sort 된 알파벳을 넣으면 되는 줄 알았다.
- zzz, aaa 가 입력으로 주어질 때
- ??z -> ?az -> zaz 순서로 결정된다.
- 즉, A에서 가장 빠른 알파벳이 B 의 가장 느린 알파벳보다도 느릴 경우에는 가장 뒤에 추가되어야한다.
- 또한 A 에서는 결국 가장 빠른 알파벳을 위해 sort 된 것 중 절반만 사용한다!
💡 포인트
- A, B 를 입력받아 정렬한다.
- A, B 에서 사용되는 만큼만 잘라 queue로 생성한다.
- A의 요소가 마지막 요소이거나 B의 마지막 알파벳보다 작을 경우에 앞에서부터 채우고 나머지 경우에 뒤에서부터 채운다.
- B의 요소가 마지막 요소이거나 A의 마지막 알파벳보다 클 경우에 앞에서부터 채우고 나머지 경우에 뒤에서부터 채운다.
💻 코드
from collections import deque
A = sorted(input())
B = sorted(input())
N = len(A)
A = deque(A[:(N+1)//2])
B = deque(B[N-N//2:N])
result_front = result_rear = ""
for idx in range(N):
if idx%2:
if A and A[0] >= B[-1]:
result_rear = B.popleft() + result_rear
else:
result_front += B.pop()
else:
if B and B[-1] <= A[0]:
result_rear = A.pop() + result_rear
else:
result_front += A.popleft()
print(result_front + result_rear)
댓글남기기