728x90

단계별로 풀어보기 그리디 알고리즘의 마지막(4단계) 문제

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

더하기끼리 최대한 많이 묶으면 된다.

import java.awt.datatransfer.StringSelection;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        StringTokenizer st = new StringTokenizer(s, "-");
        ArrayList list = new ArrayList<>();
        while (st.hasMoreTokens()) {
            String next = st.nextToken();
            if(next.contains("+")) {
                StringTokenizer tokenizer = new StringTokenizer(next, "+");
                int sum = 0;
                while (tokenizer.hasMoreTokens()) {
                    sum += Integer.parseInt(tokenizer.nextToken());
                }
                list.add(sum);
            }
            else {
                list.add(Integer.parseInt(next));
            }
        }
        int result = list.get(0);
        for (int i = 1; i < list.size(); i++) {
            result -= list.get(i);
        }
        System.out.println(result);
    }
}

728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 2178번 미로 탐색  (0) 2020.01.10
[백준] 1330번 두 수 비교하기  (0) 2020.01.10
[백준] 1931번 회의실 배정  (0) 2020.01.10
[백준] 11399 ATM  (0) 2020.01.10
[백준] 11047 동전0  (0) 2020.01.10

+ Recent posts