• 문제 링크
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
• 풀이 과정
덧셈과 뺄셈이 혼재되어 있는 식에서 문제에 제시되어 있는 조건 상 최소 값을 구해내기 위해선
덧셈으로 이루어진 식을 괄호를 쳐서 먼저 계산한 후 뺄셈을 계산해야한다.
우선 전체식을 "-" 를 기준으로 분리하고 각각의 분리된 식에 포함된 수를 모두 더하는데
분리된 식을 문자열 파싱할 때 "+" 는 메타문자이므로 "\\+" 을 기준으로 파싱하며,
이때 생성된 모든 수를 더한 값을 result 변수에 뺄셈한다.
이때 result 변수가 초기값인지 여부를 확인 후 "-" 로 파싱한 첫번째 토큰 값으로 갱신하고
나머지 값들이 존재 시 result 변수에 뺄셈한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] input = br.readLine().split("-");
int result = Integer.MAX_VALUE;
for (int i = 0; i < input.length; i++) {
String[] part = input[i].split("\\+");
int sum = 0;
for (int j = 0; j < part.length; j++)
sum += Integer.parseInt(part[j]);
if (result == Integer.MAX_VALUE)
result = sum;
else
result -= sum;
}
bw.write(result + "\n");
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1697 숨바꼭질 - Graph Theory / Java (0) | 2022.06.11 |
---|---|
[백준] 16953 A → B - Graph Theory / Java (0) | 2022.06.10 |
[백준] 13305 주유소 - Greedy / Java (0) | 2022.06.08 |
[백준] 1063 킹 - Implementation / Java (0) | 2022.06.07 |
[백준] 2980 도로와 신호등 - Implementation / Java (0) | 2022.06.06 |
댓글