코딩테스트/BOJ

[BOJ] 1541 잃어버린 괄호 - JAVA

5월._. 2022. 7. 18.
728x90

1. 문제

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 


2. 풀이

1,  입력값은 String으로 받는다.

2.  첫번째로 나오는 '-'의 인덱스 위치를 idx에 저장한다.

3.  StringTokenizer로 idx앞쪽의 숫자들을 전부 result에 더한다. 만약 입력값에 '-'가 없어서 idx가 음수라면 삼항연산자를 이용해 input.length()값으로 대체한다.

4.  idx가 0보다 크다면 '-'가 있는 경우이므로 StringTokenizer로 idx뒤의 숫자를 전부 result에서 뺀다.

5.  result를 출력한다.

 

import java.io.*;
import java.util.*;

public class BOJ_1541_잃어버린괄호 {
   public static void main(String[] args) throws IOException {
      String input = new BufferedReader(new InputStreamReader(System.in)).readLine();
      int idx = input.indexOf('-');
      int result = 0;

      StringTokenizer st = new StringTokenizer(input.substring(0,idx<0?input.length():idx),"+,-");
      for(int count = st.countTokens();count>0;count--) result += Integer.parseInt(st.nextToken());

      if(idx>=0) {
         st = new StringTokenizer(input.substring(idx), "+,-");
         for (int count = st.countTokens(); count > 0; count--) result -= Integer.parseInt(st.nextToken());
      }

      System.out.println(result);
   }
}

3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 13565 침투 - JAVA  (0) 2022.07.20
[BOJ] 2529 부등호 - JAVA  (0) 2022.07.19
[BOJ] 2583 영역 구하기 - JAVA  (0) 2022.07.17
[BOJ] 2468 안전영역 - JAVA  (0) 2022.07.16
[BOJ] 10799 쇠막대기 - JAVA  (0) 2022.07.15

댓글