
안녕하세요
여행벌입니다.
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.
www.acmicpc.net
[알고리즘아이디어]
괄호를 자유롭게 이용할 수 있으므로, ' - ' 연산자 뒤로는 괄호를 통해 항상 음수값을 얻을 수 있다.
따라서, ' - ' 가 나온 뒤로는 값에서 빼주면 되고, 아니면 더해주면 된다.
#include<iostream>
#include<string>
using namespace std;
int main(void) {
string input;
cin >> input;
int total = 0;
bool flag = false; // false 는 + true 는 -
for (int i = 0; i < input.length();) {
string stemp;
int ntemp;
if (input[i] != '+' && input[i] != '-') {
while (input[i] != '+' && input[i] != '-') {
stemp += input[i];
i++;
if (i == input.length())
break;
}
ntemp = stoi(stemp);
if (flag == false)
total += ntemp;
else
total -= ntemp;
}
else if (input[i] == '-') {
flag = true;
i++;
}
else{
i++;
}
}
cout << total;
}
[주의할점]
if (i == input.length())
break;
input[i] 를 참조해야되므로, 다음과 같이 참조불가능한 값이 되었을 때, 처리를 따로 해주지 않으면 에러가 발생한다.
열심히 공부하고 노력하고 있는 꿈 많은 예비 개발자입니다.
혼자서 공부한 내용을 정리하고 포스팅하다 보니 틀린 내용이 있을 수도 있습니다.
많은 조언과 가르침 주실 분은 댓글로 자유롭게 남겨주셔도 좋을 것 같습니다!
감사합니다.
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 10844 - 쉬운 계단 수 (0) | 2019.09.03 |
---|---|
[BOJ] 4949 - The Balance of the World (0) | 2019.09.02 |
[BOJ] 11758 - CCW (0) | 2019.08.28 |
[BOJ] 7569 - 토마토 (0) | 2019.08.27 |
[BOJ] 1004 - 어린 왕자 (0) | 2019.08.22 |