새발블로그

[백준/Java] 1541 잃어버린 괄호 본문

Problem Solving/Baekjoon

[백준/Java] 1541 잃어버린 괄호

EUG 2025. 3. 26. 23:03

문제

https://www.acmicpc.net/problem/1541

 

 

풀이방법

가장 큰 수를 빼야한다고 생각했다.

그러므로, (   ) - (   ) - (   ) 이렇게 최대한 크게크게 묶어야한다고 생각하였따

 

1. 1. \\+를 사용하는 이유

+는 정규 표현식에서 하나 이상의 문자을 의미하는 메타 문자로, 단순히 +를 사용하며 정규 표현식으로 인식된다.

그러므로 이스케이프 문자를 사용해 \\를 사용해야한다.

 

2. 문자열과 숫자 변환 관련 문법

문자열 -> 숫자

Integer.parseInt(String s):  
문자열을 int로 변환한다.
예: int num = Integer.parseInt("123");

 

Integer.valueOf(String s):  
문자열을 Integer 객체로 변환합니다.
예: Integer num = Integer.valueOf("123");

 

Double.parseDouble(String s):  
문자열을 double로 변환한다.
예: double num = Double.parseDouble("123.45");

 

숫자-> 문자열

String.valueOf(int i):  
int를 문자열로 변환한다.
예: String str = String.valueOf(123);

 

Integer.toString(int i):  
int를 문자열로 변환한다.
예: String str = Integer.toString(123);

 

Double.toString(double d):  
double을 문자열로 변환한다.
예: String str = Double.toString(123.45);

 

String.format:
다양한 형식으로 숫자를 문자열로 변환한다.
예: String str = String.format("%d", 123);

풀이

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

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        String[] minusStrs = sc.nextLine().split("-");
        int sum = 0;

        //첫번째 인덱스 처리
        String[] firstPlusStrs = minusStrs[0].split("\\+");
        for (String str : firstPlusStrs) {
            sum += Integer.parseInt(str);
        }
        //나머지 처리
        for (int i = 1; i<minusStrs.length; i++) {
            String[] plusStrs = minusStrs[i].split("\\+");
            int temp = 0;
            for (String str : plusStrs) {
                temp += Integer.parseInt(str);
            }
            sum -= temp;

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