안녕하세요

여행벌입니다.


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

+ Recent posts