괄호 넣어 값 줄이기
문제
재이와 선우는 식을 적어 건네는 놀이를 한다. 재이가 종이에 식 하나를 적어 건네면, 선우는 그 식에 괄호를 넣어 값을 가장 작게 만들어야 한다.
재이가 적는 식에는 더하기와 빼기만 들어간다. 선우는 식에 적힌 수의 순서를 바꾸거나 수를 고칠 수 없고, 연산자를 바꿀 수도 없다. 선우가 할 수 있는 일은 괄호를 넣는 것뿐이다. 괄호는 몇 쌍을 넣어도 되고 하나도 넣지 않아도 되지만, 넣은 뒤에도 올바른 식이어야 한다.
예를 들어 재이가 55-50+40을 적어 건넸다고 해보자. 선우가 괄호를 넣는 방법과 그때의 값은 다음과 같다.
| 선우가 만든 식 | 값 |
|---|---|
| 55-50+40 | 45 |
| 55-(50+40) | -35 |
괄호를 넣지 않으면 45이고, 뒤의 두 수를 묶으면 -35다. 이 식에서 만들 수 있는 가장 작은 값은 -35다.
괄호를 넣어도 값이 작아지지 않는 식도 있다. 재이가 11826-35672-3642를 적었다고 해보자.
| 선우가 만든 식 | 값 |
|---|---|
| 11826-35672-3642 | -27488 |
| 11826-(35672-3642) | -21794 |
이 경우에는 괄호를 하나도 넣지 않은 -27488이 가장 작다.
식이 긴 경우도 보자. 재이가 17783+64711-44284+60526-25944-93096을 적었다고 해보자. 빼기 기호를 기준으로 식을 끊으면 다음과 같이 네 덩이가 된다.
| 덩이 | 식 | 값 |
|---|---|---|
| 첫째 | 17783+64711 | 82494 |
| 둘째 | 44284+60526 | 104810 |
| 셋째 | 25944 | 25944 |
| 넷째 | 93096 | 93096 |
빼기 기호 뒤에 오는 덩이는 괄호로 묶어 통째로 뺄 수 있다. 첫째 덩이에서 나머지 덩이를 모두 빼면 82494 - 104810 - 25944 - 93096 = -141356이고, 이 값이 이 식에서 만들 수 있는 가장 작은 값이다.
재이가 적은 식이 주어졌을 때, 선우가 괄호를 넣어 만들 수 있는 가장 작은 값을 구하는 프로그램을 작성하여라.
입출력 예시
예시 1
입력
55-50+40
출력
-35
예시 2
입력
11826-35672-3642
출력
-27488
예시 3
입력
00009-00009
출력
0
입력 조건
첫째 줄에 재이가 적은 식이 주어진다. 식은 숫자와 더하기 기호와 빼기 기호로만 이루어지고, 식의 길이는 50보다 작거나 같다.
식의 맨 앞과 맨 뒤에는 숫자가 온다. 연산자가 두 개 이상 연달아 나오는 일은 없다.
식에 나오는 수는 0 이상의 정수이고, 0으로 시작할 수도 있다. 예를 들어 00009는 9를 뜻한다.
연산자가 하나도 없이 수 하나만 적힌 식도 주어진다.
출력 조건
선우가 괄호를 넣어 만들 수 있는 가장 작은 값을 첫째 줄에 출력한다.
수 하나를 출력하고 줄을 바꾼다. 값이 음수이면 앞에 빼기 기호를 붙여 출력한다. 그 밖에 다른 글자나 공백은 붙이지 않는다.
요구사항
- 입력은 표준 입력으로 받고 답은 표준 출력으로 내보냅니다
- 수의 순서를 바꾸거나 연산자를 고칠 수는 없습니다. 넣을 수 있는 것은 괄호뿐입니다
- 괄호를 하나도 넣지 않는 것도 하나의 방법입니다. 괄호를 넣어 값이 작아지지 않는 식이 있습니다
- 0으로 시작하는 수가 나올 수 있습니다. 00009는 9로 읽습니다
- 식에 연산자가 하나도 없이 수 하나만 적혀 있을 수 있습니다. 이때는 그 수가 그대로 답이 됩니다
- 답은 음수일 수 있습니다
- 채점은 출력을 기대값과 글자 하나까지 견줍니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
55-50+40
-35
00009-00009
0
11826-35672-3642
-27488
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.