1541. 잃어버린 괄호 (S2)
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
2 초 | 128 MB | 95458 | 52515 | 40936 | 54.401 % |
문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
.
summary
괄호를 활용해서 최솟값 찾기
- ‘0’~‘9’, ‘+’, ‘-’만으로 이루어짐
- 처음과 끝은 숫자임
- 연산자는 두개 이상 연속되지 않음
- 5자리보다 많이 연속되는 숫자는 없음
strategy
문자열 문제 (아이디어 문제)
- 마이너스가 처음 등장한 이후 부터는 모든 숫자가 마이너스임
note
- 입력으로 주어지는 식의 길이는 50보다 작거나 같음
import java.util.*;
import java.io.*;
public class Main {
static int answer = 0;
static boolean flag = true;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer input = new StringTokenizer(br.readLine(), "+-", true);
while(input.hasMoreTokens()) {
String str = input.nextToken();
if(str.equals("-")) flag = false;
else if(str.equals("+")) ;
else {
if(flag) answer += Integer.parseInt(str);
else answer -= Integer.parseInt(str);
}
}
System.out.println(answer);
}
}
문제 | 결과 | 메모리 | 시간 | 언어코드 | 길이 |
1541 | 맞았습니다!! | 14312 KB | 100ms | Java 11 / 수정 | 714B |
memo
- 문자열을 효율적으로 다루는 경험 쌓기 문제
- StringTokenizer 은 구분식을 포함할 수 있음
- split 은 구분자를 정규식으로 받는다. ("[+-]") 또는 ("\\+-") 사용. 인자로 limit 를 받을 수 있음
'문제 풀이 > 백준' 카테고리의 다른 글
[JAVA51] 1920. 수 찾기 (2) | 2024.10.10 |
---|---|
[JAVA50] 1253. 좋다 (0) | 2024.10.09 |
[JAVA46] 3079. 입국심사 (1) | 2024.10.07 |
[JAVA45] 1018. 체스판 다시 칠하기 (2) | 2024.10.03 |
[JAVA44] 1238. 파티 (1) | 2024.10.02 |