연습문제

[한양대 HCPC 2023] Yeah, but How?

난이도
Lv. 2
제출
497 명
참가자
256 명
정답률
55.90 %
지원 언어
C#
C
C++
Java
Python
JavaScript
Kotlin
Swift
Go
Rust
언어별 시간/메모리
언어별 시간/메모리 표
언어 시간 메모리
JavaScript 5초 1024MB
Java 3초 1024MB
Python 5초 1024MB
Kotlin 3초 1024MB
C 1초 1024MB
C++ 1초 1024MB
Swift 1초 1024MB
C# 3초 1024MB
Go 1초 1024MB
Rust 1초 1024MB

()로만 이루어진 문자열 가 아래 조건을 충족하면, 이를 균형 잡힌 괄호 문자열이라고 한다.

  • 1+를 원하는 위치에 적절히 추가해서 제대로 된 수식을 만들 수 있다.
    • 예로, (()()) 등의 수식을 만들 수 있으므로 균형 잡힌 괄호 문자열이다.
    • 하지만, ())(1+를 어떻게 넣어도 제대로 된 수식을 만들어 낼 수 없으므로 균형 잡힌 괄호 문자열이 아니다.

여기서, 제대로 된 수식은 다음과 같이 정의된다.

  • 은 제대로 된 수식이다.
  • 가 제대로 된 수식이라면, 두 수식을 더하는 도 제대로 된 수식이다.
  • 가 제대로 된 수식이라면, 수식에 괄호를 씌운 도 제대로 된 수식이다.

세훈이는 이 정의에 궁금증을 가지고, 균형 잡힌 괄호 문자열이 주어질 때 수식을 직접 만들어 보기로 했다.

제약조건

입력형식

첫 번째 줄에 균형 잡힌 괄호 문자열 가 주어진다.

출력형식

첫 번째 줄에 주어진 괄호 문자열로 만들 수 있는 수식 를 출력한다.출력되는 수식 는 다음 조건을 충족해야 한다.

  • 수식의 길이는 이하여야 한다.
  • 는 제대로 된 수식이어야 한다.
  • 에서 ()만 남기면 가 만들어져야 한다.
  • (, ), 1, +로만 이루어져야 한다. 특히, 수식의 중간에 공백 등의 문자가 들어가면 안 된다.

입력 조건 내에서, 위 조건을 충족하는 수식을 만들 수 있음을 증명할 수 있다.

가능한 수식이 여러 가지인 경우, 그중 아무거나 하나를 출력한다.

입력예제1

(()())

출력예제1

((1+1)+(1)+1)

입력예제2

()()()

출력예제2

(1)+(1)+(1)