문제 분석

-가 나오기 전까지는 계속 더 해준다.

-가 나오게 되면 지금까지 나온수까지만 더 해주고 그 이후로는 전부다 빼준다.

마지막 숫자는 그전에 -가 한번이라도 나왔으면 빼주고 그렇지 않다면 더해준다.

 

-유무에 따라 빼주는건 10+20+30-10-20-30+10 이 있다고 했을 때 한번이라도 -가 나온다면 그 뒤는 전부 -가 된다는 것을 알 수 있다 ( -뒤로 나오는+는 더해준다음에 빼주면되고 -뒤에 나오는 -는 그대로 빼주면 되니까)

한번이라도 나오는 경우 인 케이스는 boolean을 이용해 체크해줬다.

 

 

 

 

전체 소스

import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		int size = str.length();

		int p = 0;
		String input = "";
		boolean check = false;
		int sum = 0;
		while (p != str.length()) {
			char now = str.charAt(p);

			if (now == '+' && check == false) {
				sum = sum + Integer.parseInt(input);
				input ="";
			} else if (now == '-' && check == false) {
				sum = sum + Integer.parseInt(input);
				input ="";
				check = true;
			} else if (now == '+' && check == true) {
				sum = sum - Integer.parseInt(input);
				input ="";
			} else if (now == '-' && check == true) {
				sum = sum - Integer.parseInt(input);
				input ="";
			}
			else {
				input = input + now;
			}

			p++;

		}
		if(check==false) {
			sum = sum + Integer.parseInt(input);
		}else if(check==true) {
			sum = sum - Integer.parseInt(input);

		}
		System.out.println(sum);
	}
}

 

 

 


문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

입력

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.

출력

첫째 줄에 정답을 출력한다.

예제 입력 1 복사

55-50+40

예제 출력 1 복사

-35

예제 입력 2 복사

10+20+30+40

예제 출력 2 복사

100

예제 입력 3 복사

00009-00009

예제 출력 3 복사

0

'알고리즘(BOJ) > Silver' 카테고리의 다른 글

백준 - ATM 11399  (0) 2023.02.11
백준 - 섬의 개수 4963  (0) 2023.02.10
백준 - 로프 2217  (0) 2023.02.09
백준 - 안전 영역 2468  (0) 2023.02.09
백준 - 동전0 11047  (0) 2023.02.09
복사했습니다!