아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

문자열 생성

면접 대비

시간 제한1초메모리 제한128 MB

요약
S의 왼쪽 끝이나 오른쪽 끝 문자를 골라 T 뒤에 붙일 때 만들 수 있는 문자열 중 사전순으로 가장 작은 것을 80자마다 줄바꿈해 출력한다.
난이도

보통10점 중 5점

유형
그리디, 문자열, 투 포인터, 구현
정답자
아직 제출이 없습니다

문제

길이가 NN인 문자열 SS가 주어진다.

문자열 SS의 문자들을 사용하여 새로운 문자열 TT를 만든다. 처음에 TT는 빈 문자열이며, SS가 빈 문자열이 될 때까지 다음 두 연산 중 하나를 반복한다.

  • SS의 맨 앞 문자를 하나 꺼내어 TT의 맨 뒤에 붙인다.
  • SS의 맨 뒤 문자를 하나 꺼내어 TT의 맨 뒤에 붙인다.

이렇게 만들 수 있는 모든 문자열 TT 중에서 사전순으로 가장 앞서는 것을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 문자열 SS의 길이 NN이 주어진다. (1≤N≤2 0001 \le N \le 2\,000)

이어지는 NN개의 줄에 SS를 이루는 문자가 한 줄에 하나씩 순서대로 주어진다.

출력

만들 수 있는 문자열 TT 중 사전순으로 가장 앞서는 것을 출력한다. 이때 80글자마다 줄을 바꾸어 출력한다.

힌트

S=S = ACDBCB에서 시작하여 TT를 만들어 가는 과정의 한 예는 다음과 같다.

단계남은 SSTT
1ACDBCB(빈 문자열)
2CDBCBA
3CDBCAB
4CDBABC
5CDABCB
6DABCBC
7(빈 문자열)ABCBCD

예제1

  1. 예제 1

    입력
    6
    A
    C
    D
    B
    C
    B
    
    예상 출력
    ABCBCD