์ฝ”๋”ฉํ…Œ์ŠคํŠธ/BOJ

[๋ฐฑ์ค€ 1541] ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ(C++)

kite707 2021. 8. 13.

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

 

1541๋ฒˆ: ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ

์ฒซ์งธ ์ค„์— ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์‹์€ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ  ‘-’๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†ํ•ด์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , 5์ž๋ฆฌ๋ณด๋‹ค

www.acmicpc.net

์ด ๋ฌธ์ œ๋Š” ๋‘๊ฐ€์ง€๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. 

  1.  ์ฒซ๋ฒˆ์งธ ์ˆ˜๋Š” ๋ฌด์กฐ๊ฑด ๋”ํ•ด์ฃผ๋Š” ์ˆ˜์ด๋‹ค.
  2.  -๊ฐ€ ํ•œ๋ฒˆ์ด๋ผ๋„ ๋‚˜์˜ค๋ฉด ๊ทธ ๋’ค์— ๋‚˜์˜ค๋Š” ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋นผ์ค˜์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค๋ฉด ์œ„์˜ 55-50+40์ด๋ผ๋Š” ์‹์€ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” 55-(50+40)์ด๋ ‡๊ฒŒ ๊ด„ํ˜ธ๋ฅผ ์น  ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๊ฒฐ๋ก ์ ์œผ๋กœ 55-50-40=-35๊ฐ€ ๋œ๋‹ค.

 

์œ„ ๊ทœ์น™ 2๊ฐœ๋ฅผ ์œ ๋…ํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

#include <iostream>
#include <vector>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	string ss;
	cin >> ss;

	int num = 0;
    

	//์—ฐ์‚ฐ์ž ์ €์žฅํ•˜๋Š” ๋ฒกํ„ฐ, ์ˆซ์ž ์ €์žฅํ•˜๋Š” ๋ฒกํ„ฐ ์„ ์–ธ
	vector<int>oper;
	vector<int> numbers;

	for (int i = 0; i < ss.length(); i++) {
		if (ss[i] == '-' || ss[i] == '+') {
			if (ss[i] == '+') {
				oper.push_back(1);
			}
			else {
				oper.push_back(-1);
			}

			numbers.push_back(num);
			num = 0;
		}
		else {
			num = num * 10 + ss[i] - '0';
		}

		
	}
    //์ˆ˜์‹์ค‘ +๋‚˜ -๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๋งŒ numbers๋ฒกํ„ฐ์— ํ˜„์žฌ num์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—
    //๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” ์ €์žฅ๋˜์ง€ ์•Š์•„ ๋”ฐ๋กœ ์ €์žฅํ•ด์คŒ
	numbers.push_back(num);

	bool isminus = false;
    
    //์ฒซ๋ฒˆ์งธ ์ˆ˜๋Š” ๋ฌด์กฐ๊ฑด ๋”ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ๋”ํ•ด์คŒ
    //์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ์—ฐ์‚ฐ์ž ๋ฒกํ„ฐ๋ณด๋‹ค ์ˆซ์ž๋ฒกํ„ฐ๊ฐ€ ์›์†Œ 1๊ฐœ๋ฅผ ๋” ๊ฐ€์ง€๊ณ  ์žˆ์–ด
    //๊ฐœ์ˆ˜๋ฅผ ๋งž์ถฐ์ฃผ๊ธฐ ์œ„ํ•จ
	int ans = numbers[0];
	numbers.erase(numbers.begin());

	for (int i = 0; i < oper.size(); i++) {
		if (oper[i] == -1) {
			isminus = true;
		}
		if (isminus) {
			ans -= numbers[i];
		}
		else {
			ans += numbers[i];
		}
	}


	cout << ans;




}

 

๋Œ“๊ธ€