코테/백준

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

imname1am 2023. 4. 24. 22:40
반응형

🔺 문제

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 

🔺 코드

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[] str = br.readLine().split("-");

        int answer = 0;

        for(int i = 0 ; i < str.length ; i++) {
            int tmp = mySum(str[i]);

            // 가장 앞에 있는 값만 더함
            if(i == 0) {
                answer += tmp;
            }
            // 뒷부분은 더한 값들을 뺌
            else {
                answer -= tmp;
            }
        }

        System.out.println(answer);
    }

    // 현재 String에 있는 수를 모두 더하는 함수
    static int mySum(String a) {
        int sum = 0;

        String[] s = a.split("[+]");

        for(int i = 0 ; i < s.length ; i++) {
            sum += Integer.parseInt(s[i]);
        }
        return sum;
    }
}
✅ 해결 아이디어
✔ 그리디
- 최솟값 만들기 위해 가능한 한 큰 수 빼기 덧셈 부분 먼저 계산

1) 더하기 연산 먼저 수행
2) 가장 앞에 있는 값에서 더하기 연산으로 나온 결괏값들 모두 빼기

 


🔺 다른 풀이들

- StringTokenizer()를 활용한 풀이도 있당

 

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

www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개

st-lab.tistory.com


💬 느낀 점

정규식에서 왜 .split("+")로 하면 안 되지? 했는데

이런 이유 때문이라 함

 

그래서 ("\\+")("[+]") 이렇게 해주면 된당

 

1회독 2회독 3회독 4회독 5회독
V 6.19      

 

 

(+6.19 2회독)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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[] str = br.readLine().split("-");
        int total = 0;
        
        for(int i = 0 ; i < str.length ; i++) {
            int tmp = mySum(str[i]);
            
            if(i == 0)  total += tmp;    // 가장 앞에 있는 값만 더함
            else        total -= tmp;    // 뒷부분은 더한 값들을 뺌
        }
        System.out.println(total);
    }
    
    // 현재 String에 있는 를 
    static int mySum(String s) {
        int sum = 0;
        
        String[] st = s.split("[+]");
        for(int i = 0 ; i < st.length ; i++) {
            sum += Integer.parseInt(st[i]);
        }
        
        return sum;
    }
}
 
cs


(참고)

✔ 자바 정규식 사용법

 

☕ 자바 정규식(Regular Expression) 사용법 💯 정리

정규표현식 이란 정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성

inpa.tistory.com

 

반응형