1일 1PS 14일차!

📚 문제


골드 1

  • 단순하게 sort 된 알파벳을 넣으면 되는 줄 알았다.
  • zzz, aaa 가 입력으로 주어질 때
    • ??z -> ?az -> zaz 순서로 결정된다.
    • 즉, A에서 가장 빠른 알파벳이 B 의 가장 느린 알파벳보다도 느릴 경우에는 가장 뒤에 추가되어야한다.
    • 또한 A 에서는 결국 가장 빠른 알파벳을 위해 sort 된 것 중 절반만 사용한다!

💡 포인트


  1. A, B 를 입력받아 정렬한다.
  2. A, B 에서 사용되는 만큼만 잘라 queue로 생성한다.
  3. A의 요소가 마지막 요소이거나 B의 마지막 알파벳보다 작을 경우에 앞에서부터 채우고 나머지 경우에 뒤에서부터 채운다.
  4. 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)

업데이트:

댓글남기기