코딩테스트 연습 기록

이종길·2022년 3월 1일
0

코딩테스트 연습

목록 보기
90/128

2022.03.01 66일차

백준 1541번 (잃어버린 괄호)

문제

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

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

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

나의 풀이

  1. 괄호를 활용해서 식의 값을 최소로 만들기, 처음 나오는 -가 핵심
  2. -이후에 숫자들을 모두 더하고 -앞에 숫자와 빼면 최소값
  3. -가 없는 경우 split을 사용해서 +를 나누어 모든 수 더하기
  4. -가 있는 경우 -앞에 숫자(startNum)들은 +를 기준으로 split한 후 더하기, -뒤에 숫자(endNum)들은 +,-를 기준으로 split한 후 더하기
  5. 최소값은 endNum - startNum
import java.io.*;
import java.util.*;

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

        String value = br.readLine();

        int minus = value.indexOf("-");

        if (minus == -1) {
            int answer = 0;
            for (String s : value.split("\\+")) {
                answer += Integer.parseInt(s);
            }
            System.out.println(answer);
        } else {
            String start = value.substring(0, minus);
            String end = value.substring(minus + 1);

            int startNum = 0;
            int endNum = 0;

            for (String s : start.split("[+]")) {
                startNum += Integer.parseInt(s);
            }

            for (String s : end.split("[-, +]")) {
                endNum += Integer.parseInt(s);
            }

            System.out.println(startNum - endNum);
        }

    }
}

생각하기

  • split의 구분자가 두 개 이상인 경우 배열로 하면 가능
  • 특수문자의 경우 \\ 붙이기 or 배열 사용
profile
Go High

0개의 댓글

관련 채용 정보