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

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

Digion

시간 제한2초메모리 제한1024 MB

요약
중첩 규칙 (A)B로 만들어진 Digion 문자열이 주어질 때, 무게와 내부, 외부 순서로 정렬했을 때 바로 다음 Digion을 구한다.
난이도

어려움10점 중 8점

유형
재귀, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

Digion을 다음과 같이 정의한다.

  1. 빈 문자열은 Digion이다. 이를 Null Digion이라고 부른다.
  2. ()는 Digion이다. 이를 기본 Digion이라고 부른다.
  3. A와 B가 Digion이면 (A)B도 Digion이다. 이때 A를 안쪽 Digion, B를 바깥쪽 Digion이라고 부른다.

Digion의 무게는 (와 ) 쌍의 개수이다. 예를 들어 ()의 무게는 1이다. 다음 기준으로 Digion의 순서를 정할 수 있다.

  1. 무게가 클수록 비싸다.
  2. 두 Digion의 무게가 같으면 안쪽 Digion이 더 비싼 쪽이 더 비싸다.
  3. 두 Digion의 무게가 같고 안쪽 Digion의 값도 같으면 바깥쪽 Digion이 더 비싼 쪽이 더 비싸다.

이 기준으로 싼 것부터 비싼 것 순서로 정렬할 수 있다. Digion 하나가 주어질 때, 그 Digion보다 바로 다음으로 비싼 Digion, 즉 정렬했을 때 바로 뒤에 오는 Digion을 구하자.

입력

첫째 줄에 Digion이 주어지며, 문자열의 끝은 $로 표시한다. 입력으로 주어지는 Digion의 무게는 30 이하이다.

출력

첫째 줄에 입력으로 주어진 Digion의 바로 다음으로 비싼 Digion을 출력한다.

예제3

  1. 예제 1

    입력
    ()$
    
    예상 출력
    ()()
    
  2. 예제 2

    입력
    ()()$
    
    예상 출력
    (())
    
  3. 예제 3

    입력
    (()(()))(()())$
    
    예상 출력
    (()(()))((()))