알고리즘 스터디 (잃어버린 괄호[백준 1541])

박윤택·2022년 5월 9일
3

알고리즘

목록 보기
5/25

문제

문제 이해

한줄에 입력받은 수식들에 괄호를 잘 넣어서 결과값이 최소가 나올때의 값을 구한다.
-> + 연산을 먼저 수행하고 나서 - 연산을 수행하면 된다.

코드

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

public class LostBracket {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    String[] word = st.nextToken().split("-");
    int answer;
    for (int i = 0; i < word.length; i++) {
      word[i] = plusExpression(word[i]);
    }
    answer = Integer.parseInt(word[0]);
    for (int i = 1; i < word.length; i++) {
      answer -= Integer.parseInt(word[i]);
    }
    System.out.println(answer);
  }

  private static String plusExpression(String expression) {
    String[] ex = expression.split("\\+"); // <- Dangling meta character error => '\\' 붙여주기
    int value = 0;
    for (int i = 0; i < ex.length; i++) {
      value += Integer.parseInt(ex[i]);
    }
    return Integer.toString(value);
  }
}

코드 설명

  • 입력받은 문자열을 -를 기준으로 split 해준다.
    • split 된 문자열을 탐색하면서 다시 한번 +를 기준으로 split 해준다.
    • +를 기준으로 split을 하였기 때문에 각각의 값들을 더해주고 이를 String으로 return 해준다.
    • return 받은 값을 +를 기준으로 split하기 전의 문자열 배열에 대체해준다.
  • 답을 구하기 위해 대체된 문자열 배열을 다시 탐색하면서 계속해서 빼주면 답을 구할 수 있다.

0개의 댓글