메이쁘

(JAVA) 백준 16637번 : 괄호 추가하기 본문

Algorithm/Baekjoon

(JAVA) 백준 16637번 : 괄호 추가하기

메이쁘 2020. 4. 29. 02:02

https://www.acmicpc.net/problem/16637

 

16637번: 괄호 추가하기

길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다. 수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 하나만 들어 있어야 한다. 예를 들어, 3+8×7-9×2에 괄호를 3+(8×7)-(9×

www.acmicpc.net

 

 

 

백트래킹을 사용했다.

 

 

 

 

핵심

 

 

  -  백트래킹을 통해 괄호를 만들 연산자를 선택한다.

 

  -  이 때, 괄호 내 연산자는 한 개만 존재하므로 연산자 선택 시 연속해서 선택할 수 없다.

 

  -  boolean 배열을 사용해서 True : 괄호 만들 연산자, False : 괄호 만들지 않는 연산자 를 구분한다.

 

  -  Character 숫자를 적절히 int로 변경한다. ( Character.getNumericValue(char) )

 

  -  괄호 만든 연산자를 구분해서 계산한다.

 

 

핵심들만 유의해서 알고리즘을 작성하면 쉽게 해결한다.

 

 

 

매커니즘은 소스코드 주석으로 대신하겠다.

 

 

 

감사합니다!

 

 

 

소스코드


Comments