문제 풀이/백준

[백준] 1541번. 잃어버린 괄호(JAVA)

27200 2024. 12. 2. 15:18

문제

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


풀이(15분)

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

public class Main{

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String input = br.readLine();
        boolean start = false;
        if(input.charAt(0) == '-'){
            start = true;
        }
        String[] split = input.split("-");
        ArrayList<Integer> list = new ArrayList<>();

        for(String s : split){
            String[] temp = s.split("\\+");
            int sum = 0;
            for(String t : temp){
                sum += Integer.parseInt(t);
            }
            list.add(sum);
        }

        int totalSum = list.stream()
                .mapToInt(Integer::intValue) // 요소를 int로 매핑
                .sum(); // 합산

        totalSum *= -1;
        if(!start){
            totalSum += list.get(0)*2;
        }
        System.out.println(totalSum);
    }
}

 

1. -를 기준으로 우선 분리한다.

2. -로 분리된 각 요소들을 모두 더한다.(- 뒤에 있는 것들을 최대한 + 해둬야 -가 크게 작용함으로)

3. 제일 앞에 부호가 -였는지 아닌지를 확인한 후에 계산을 진행한다.

3-1. -가 아니었다면 제일 앞 숫자는 +로 들어가야한다.

3-2. -였다면 모두 -로 들어가도 된다.

 

ps)한동안 split메서드를 안 쓰다보니 바로 생각이 안 났는데 역시 연습이 필수다.