6137 문자열 생성

정민용·2023년 5월 1일
0

백준

목록 보기
163/286

문제

N개의 문자로 이루어진 문자열 S가 입력된다.

이 문자열의 각 문자들로 새로운 문자열 T를 만들려고한다.

문자열 S로 문자열 T를 만드는 규칙은 다음과 같다.

  • 문자열 S의 가장 앞의 문자 하나를 문자열 T의 마지막에 추가한다.
  • 문자열 S의 가장 뒤의 문자 하나를 문자열 T의 마지막에 추가한다.

위 규칙으로 만들어진 문자열 T들 중 사전순으로 가장 빠른 문자열을 출력하는 프로그램을 작성하시오.

# 6137
import sys
input = lambda: sys.stdin.readline().strip()

n = int(input())
s, t = "", ""
for _ in range(n):
    s += input()
    
start, end = 0, n-1
while start < end:
    if s[start] < s[end]:
        t += s[start]
        start += 1
    elif s[start] > s[end]:
        t += s[end]
        end -= 1
    else:
        s_next, e_next = start, end
        check = True
        while s_next < e_next:
            if s[s_next] < s[e_next]:
                t += s[start]
                start += 1
                check = False
                break
            elif s[s_next] > s[e_next]:
                t += s[end]
                end -= 1
                check = False
                break
            else:
                s_next += 1
                e_next -= 1
        if check:
            t += s[start]
            start += 1
            
t += s[start]

for i in range(n):
    print(t[i], end = "")
    if (i+1) % 80 == 0:
        print()

백준 6137 문자열 생성

0개의 댓글