백준 1541 그리디 알고리즘

changho Youn·2023년 11월 8일
0

출처: https://www.acmicpc.net/problem/1541



사고과정

  1. +부터 먼저 계산한다.
  2. 그다음 -를 분기로 계산했을 때 최솟값이 된다.
package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Baek1541 {
    static int sum;

    public static void main(String[] args) throws IOException {
        //-를 기준으로 나누자!
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        StringBuilder sb = new StringBuilder();
        List<Integer> nums = new ArrayList<>();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != '-') {
                sb.append(s.charAt(i));
            } else {//-라면
                String temp = sb.toString();
                sb.setLength(0);
                int sum = Arrays.stream(temp.split("[+]"))
                        .mapToInt(Integer::parseInt).sum();
                nums.add(sum);
            }
        }
        if (!sb.isEmpty()) {
            String last = sb.toString();
            int lastNum = Arrays.stream(last.split("[+]")).mapToInt(Integer::parseInt)
                    .sum();
            nums.add(lastNum);
        }


        int answer =nums.get(0);
        for (int i = 1; i < nums.size(); i++) {
            answer-=nums.get(i);
        }
        System.out.println(answer);

    }


}

느낀점 : 그리디 알고리즘은 사고하기 항상 어렵다. 꾸준한 연습만이 살길...

profile
BackEnd Developer ChangDDAO입니다.🐌

0개의 댓글

관련 채용 정보