티스토리 뷰

Algorithm

[백준] S2 1541 잃어버린 괄호 (java)

코딩브론즈 2021. 1. 17. 21:57

www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

풀이

 

1) 값을 최소로 만들려면 - 가 나온 이후로 최대한 값을 더해야 함.

2) 입력값을 받을때 StringTokenizer => - 를 구분자로 쪼갠다.

3) 맨 앞 토큰은 StringTokenizer => + 를 구분자로 쪼개서 answer에 다 더해준다.

4) 그 뒤의 토큰들은 StringTokenizer => + 를 구분자로 쪼개서 다 더한 값을 answer에서 빼준다.

5) 출력

 

주의사항

 

1) 없다.

 

 

package com.baekJoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.StringTokenizer;

public class BJ_S2_1541_잃어버린괄호 {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;

	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		tokens = new StringTokenizer(input.readLine(),"-");
		String start = tokens.nextToken();
		StringTokenizer tokens3 = new StringTokenizer(start, "+");
		int answer = 0;
		while(tokens3.hasMoreTokens()) {
			answer += Integer.parseInt(tokens3.nextToken());
		}
		while(tokens.hasMoreTokens()) {
			StringTokenizer tokens2 = new StringTokenizer(tokens.nextToken(), "+");
			int temp = 0;
			while(tokens2.hasMoreTokens()) {
				temp += Integer.parseInt(tokens2.nextToken());
			}
			answer -= temp;
		}
		System.out.println(answer);
	}

	static String src =
			"55-50+40";
}

 

 

후기

 

 StringTokenizer는 항상 구분자를 공백으로만 사용했는데 이렇게 문자를 기준으로 구분하는 문제가 나와서 색다른 경헙이었다.

난이도는 쉬웠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함