-
728x90
https://www.acmicpc.net/problem/1541
핵심은 최솟값을 구하기 위해 최대한 더하여 큰 수를 빼는 것이다.
1. 마이너스(-)를 기준으로 문자열을 자른다.
2. 잘라진 문자열 속 숫자들을 다 더해주고 큐에 넣어준다.
3. 차례대로 뺀다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), "-"); // - 기준으로 문자열 분리 Queue<Integer> queue = new LinkedList<Integer>(); while(st.hasMoreTokens()) { StringTokenizer s = new StringTokenizer(st.nextToken(), "+"); // + 기준으로 문자열 분리 int sum = 0; while(s.hasMoreTokens()) // 잘라진 문자열의 합 구하기 sum += Integer.parseInt(s.nextToken()); queue.offer(sum); } int ans = queue.poll(); while(!queue.isEmpty()) ans -= queue.poll(); System.out.println(ans); } }
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[1676] 백준 - 팩토리얼 0의 개수(JAVA) (0) 2021.08.04 [1620] 백준 - 나는야 포켓몬 마스터 이다솜 (0) 2021.08.04 [1463] 백준 - 1로 만들기(JAVA) (0) 2021.08.02 [1389] 백준 - 케빈 베이컨의 6단계 법칙(JAVA) (0) 2021.08.02 [1074] 백준 - Z(JAVA) (0) 2021.07.22 댓글