[알고리즘] 백준 1541 잃어버린 괄호 풀이

Halo·2025년 5월 7일
0

Algorithm

목록 보기
36/85
post-thumbnail

🔍 Problem

1541 잃어버린 괄호


📃 Input&Output


📒 해결 과정

가. 뺄셈을 기준으로 숫자들을 나눈다.
나. 나눈 숫자들을 순회하며 "+" 기호가 있는 부분들을 전부 더해준다.
다. 첫번째 인덱스에서 두번째 인덱스에서 끝까지 빼준다.


❗ Trouble shooting

가. 문자열에서 연산 기호를 기준으로 나누어 문자열을 생성해야했다.
split(regex) 함수를 써서 해결했다.

참고로, regex는 정규표현식이고 +는 정규표현식 메타 문자기 때문에 \(escape)를 사용해서 다음과 같이 표현해야 했다.

String.split("\\+");

💻 Code

import java.util.Scanner;

public class P1541 {
    public static void main(String args[]) {
        int num = 0;
        int sum = 0;
        Scanner sc = new Scanner(System.in);

        String[] req = sc.nextLine().split("-");

        for (int i = 0; i < req.length; i++) {
            String[] addition = req[i].split("\\+");

            sum = 0;
            for (String j : addition) {
                sum += Integer.parseInt(j);
            }
            req[i] = Integer.toString(sum);
        }

        int res = Integer.parseInt(req[0]);
        for (int i = 1; i < req.length; i++) {
            res -= Integer.parseInt(req[i]);
        }

        System.out.println(res);


    }
}

🎸 기타

가. JAVA String 읽기

String req = Scanner.next();

next : 한단어 씩

nextstring : 한 문장씩


나. Java split(regex)

string.split is return Array

split함수는 array를 리턴한다. 그리고 regex를 기준으로 문자열을 잘라준다.


다. string -> int type casting

String a = "1234";
int num = Integer.parseInt(a);

>>>
1234

Integer.pareseInt를 사용해서 문자열을 Int Type으로 바꾼다.


라. int -> string type casting

int num = 1;
String a = Integer.toString(num)
>>>
"1"

Integer.toString를 사용해서 int를 String으로 바꾼다.


라. 정규표현식 메타 문자 +
+는 정규표현식 메타 문자이기 때문에, split같은 파라미터 정규표현식에 \\+라고 써야한다.



🤔 느낀점

현재 자바가 굉장히 미숙하다. 좀 더 많은 문제들을 풀면서 문법을 익혀야겠다.


📝 출처

Stranger's LAB

profile
새끼 고양이 키우고 싶다

0개의 댓글