[JAVA] 백준 1541번 : 잃어버린 괄호

조예빈·2024년 6월 28일
0

Coding Test

목록 보기
19/138

https://www.acmicpc.net/problem/1541
이 문제는 -가 나오고 난 후의 숫자들은 전부 빼 주어야 하는 문제이다.
우선, -를 기준으로 split을 하고 나면 -의 앞 숫자, -, 뒷 숫자들이 배열에 저장된다. 이 때 뒷 숫자들은 다시 +를 기준으로 분리를 해 준 후 더해 주어야 한다.

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //식 : 0~9, -으로만 이루어짐
        //최소값을 만들어야 함
        //가장 많이 더해서 빼야 함
        //주어진 숫자에서 -부분 이후 값을은 다 더해주어야 함
        int result = 0;
        String[] front = br.readLine().split("-"); //-앞까지의 수
        for (int j = 0; j < front.length; j++) { //-뒷부분
            int total = 0; //뒷부분의 합
            String[] back = front[j].split("\\+"); //+는 특수문자이므로 이스케이프 처리를 해 주어야 함. 역슬래시도 이스케이프 문자이므로 두 개를 사용해서 표현해 주어야 함
            for (int i = 0; i < back.length; i++) {
                total = total + Integer.parseInt(back[i]); //뒷부분의 합
            }
            if (j == 0) {
                result = result + total; //맨 앞의 숫자는 더해줌
            } else {
                result = result - total;
            }
        }
        System.out.println(result);
        br.close();
    }
}

+가 이스케이프 문자인 것을 몰랐기 때문에 초반에 시간 소모가 조금 있었다. 또한, 예제 입력만 가지고 -와 +로 나눈 후의 뒷부분이 무조건 하나일 것이라 생각하여 처음에는 for문을 적용해 주지 않아 시간이 조금 더 걸렸던 문제이다.

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글