본문 바로가기
문제 풀이/백준

[JAVA49] 1541. 잃어버린 괄호

by hyeminigo 2024. 10. 8.

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 를 받을 수 있음
 

☕ 자바 split / StringTokenizer - 문자열 자르기 비교

자바 문자열 자르기 자바에서 문자열을 자르는데 사용하는 대표적인 클래스가 String 클래스의 split 메서드와 StringTokenizer 클래스가 있다. 이번 시간에는 이 둘의 사용 문법을 알아보고, 둘이 어떠

inpa.tistory.com

 

'문제 풀이 > 백준' 카테고리의 다른 글

[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