BOJ-1541-잃어버린 괄호
by EunHye Jung
BOJ 1541 잃어버린 괄호
+, -, 0~9로 이루어진 숫자로 형성된 식이 주어질때 적절히 괄호를 쳐서 값을 최소로 만들기
풀이
-
연산자가 식에 존재한다면 -
연산자 뒤에 나오는 숫자들은 모두 괄호로 묶어줘서 뺄셈으로 적용시킬 수 있다.
-
연산자가 나오는 위치값을 기준으로 식을 계산해주었다.
String.indexOf(ch)를 이용해서 -
연산자의 위치를 찾아낸 다음
그 다음부터는 마이너스의 위치가 숫자의 위치보다 앞서 있으면 해당 숫자를 빼주고, 그렇지 않으면 더해주었다.
이때, -
연산자의 위치는 가장 최소값으로 설정해준다.
예를 들어 10+20-30+40-50 의 경우 -
연산자의 위치인덱스중 최소값은 20다음의 5가 된다.
- 혹은 -연산자가 아닐 경우에는 숫자로 처리하고 연산자가 나올경우 지금까지 만들어진 숫자를 처리하고 숫자값을 0으로 세팅해준다.
주의할 점은-
연산자가 아예 나오지 않을 경우에 대한 처리가 필요하다. (indexOf(ch) = -1인 경우)
소스코드
String input = br.readLine();
int n = input.length();
int minusPos = input.indexOf('-');
int ans = 0;
int num = 0;
for (int i = 0; i < n; i++) {
if (input.charAt(i) != '+' && input.charAt(i) != '-') {
num *= 10;
num += (input.charAt(i) - '0');
else {
if (minusPos > 0 && minusPos < i) {
ans -= num;
else {
ans += num;
}
num = 0;
}
}
if (minusPos > 0 && minusPos < n - 1) {
ans -= num;
else {
ans += num;
}
Subscribe via RSS