Algorithm

[BOJ] 1541. 잃어버린 괄호

프로그래민 2020. 9. 5. 13:33
반응형

이문제는 그리디를 이용하여 풀수있다.

문제를 풀기위해 여러가지 방법을 생각해보았다. +와 -에 대해 우선순위를 주는 방법도 생각해보았는데 구현이 생각보다 쉽지 않았다. 결론적으로 이 문제는 -를 기준으로 - 사이에있는 +와 숫자는 모두 연산해줘도 되는 문제였다. 그래서 우선 -를 기준으로 다 나누고, 모든 연산을 해주었다. 그 이후 맨앞에 것을 제외하고 모두음수로 만들어줄수있는 구성을 만들고 모두 더해주어서 풀 수 있었다.

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
33
34
35
36
37
38
39
40
package study5;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
 
public class Main_bj_1541_잃어버린괄호 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st= new StringTokenizer(br.readLine(),"-");
        
        StringTokenizer stPlus= null;
        
        List<Integer> list =new ArrayList<>();
        
        while(st.hasMoreTokens()) {
            String str=st.nextToken();
            
            stPlus=new StringTokenizer(str,"+");
            
            int temp=0;
            while(stPlus.hasMoreTokens()) {
                temp+=Integer.parseInt(stPlus.nextToken());
            }
            
            list.add(temp);
        }
        
        
        int answer=list.get(0);
        
        for(int i=1;i<list.size();i++) {
            answer-=list.get(i);
        }
        System.out.println(answer);
    }
}
 
                                       
반응형

'Algorithm' 카테고리의 다른 글

[BOJ] 5052. 전화번호 목록  (0) 2020.09.10
[BOJ] 1744. 수 묶기  (2) 2020.09.08
[Programmers] 방금그곡  (0) 2020.09.04
[BOJ] 1786. 찾기  (0) 2020.09.04
[Programmers] 괄호 변환  (0) 2020.09.03