๐Ÿ“ Coding Test Study/Algorithm Problem

[C++][BAKJOON][์ˆ˜ํ•™] 1541๋ฒˆ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ ํ’€์ด & ๋ฐ˜๋ก€

ibelieveinme 2021. 10. 11. 03:03
728x90

[๋ฌธ์ œ]

 

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

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

www.acmicpc.net

55-50+40 ๊ฐ™์€ ์‹์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ด„ํ˜ธ๋ฅผ ์•Œ๋งž๊ฒŒ ์ณ์„œ ์ตœ์†Œ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

์˜ˆ์‹œ ๋‹ต์€ 55-(50+40) = -35 ์ด๋‹ค.

 

[๋ฌธ์ œํ’€์ด]

๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด์„œ ๊ณ„์‚ฐํ•ด๋ณด๋ฉฐ ๊ทœ์น™์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

-๊ฐ€ ์—†์„ ๋•Œ, -๊ฐ€ ๊ฐ€์˜จ๋ฐ ๊ปด์žˆ์„ ๋•Œ, -๊ฐ€ ๊ณ„์† ์žˆ์„ ๋•Œ, - + ๊ฐ€ ๋ฐ˜๋ณต ๋  ๋•Œ ๋“ฑ๋“ฑ...

 

10+11-5+4 = 10+11-(5+4) = 12

1+10-15-10+20-1 = 1+10-(15+10)+20-(1) = 5

 

์œ„ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด ๋ณด๋ฉด, -๊ฐ€ ๋‚˜์™”๋‹ค๋ฉด ๊ทธ ๋’ค๋กœ +๊ฐ€ ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰ index์— ๋‹ค๋‹ค๋ฅผ ๋•Œ๊นŒ์ง€ ๊ด„ํ˜ธ๋ฅผ ์ณ์„œ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

[์ฝ”๋“œ]

1) ์‹์€ string์œผ๋กœ ๋ฐ›๊ณ  string index๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•œ๊ธ€์ž์”ฉ ์ฒดํฌํ•ด์ค€๋‹ค.

2) ์ฒ˜์Œ์—” +๊ธฐํ˜ธ๊ฐ€ ๋ถ™์€ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒƒ์ด๋ฏ€๋กœ number ๋ณ€์ˆ˜์— ์ฐจ๊ณก์ฐจ๊ณก string ์ˆซ์ž๋ฌธ์ž๋ฅผ ์Œ“์•„์ค€๋‹ค.

3) + , - ๊ธฐํ˜ธ๊ฐ€ ๋‚˜์˜ค๊ฑฐ๋‚˜ string ๋งˆ์ง€๋ง‰ index๋ผ๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ €์žฅํ•ด๋‘” number๋ฅผ result ๋ณ€์ˆ˜์— ๋”ํ•ด์ค€๋‹ค. (๋งจ์ฒจ์€ ์–‘์ˆ˜)

    ์ด ๋•Œ, stoi() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ string์„ int๋กœ ๋ฐ”๊ฟ”์„œ ๋”ํ•ด์ค€๋‹ค.

   3-1) -๊ธฐํ˜ธ๊ฐ€ ๋‚˜์™”๋‹ค๋ฉด,

          ๋’ค์— +๋‚˜ string ๋งˆ์ง€๋ง‰ index์— ๋‹ค๋‹ค๋ฅผ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋นผ์ค˜์•ผ ํ•˜๋ฏ€๋กœ minus flag๋ฅผ true๋กœ ์ฒดํฌํ•ด์ค€๋‹ค.

          ๊ทธ๋ฆฌ๊ณ  - ๋’ค์— +๊ฐ€ ๋‚˜์™”๋‹ค๋ฉด,

          ํ˜„์žฌ number๊นŒ์ง€๋งŒ ๋นผ์ฃผ๊ณ  minus_flag๋ฅผ false๋กœ ๋ฐ”๊ฟ”์ค˜์„œ ๋’ค์— ๋‚˜์˜ค๋Š” ์ˆซ์ž๋Š” ๋”ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

   3-2) +๊ธฐํ˜ธ๊ฐ€ ๋‚˜์™”๋‹ค๋ฉด, ๊ฑ ๋”ํ•ด์ค€๋‹ค.

4) ๋ฐ˜๋ณต๋ฌธ index๊ฐ€ ๋ฌธ์ž์—ด ๊ธธ์ด์™€ ๊ฐ™๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์—”ํ„ฐ๋ถ€๋ถ„์ด๋ฏ€๋กœ ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ•œ ๊ฐ’์„ ๋งˆ์ € ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์ฃผ๊ณ  ๋๋‚ธ๋‹ค. 

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

int main() {
	string str ="";
	cin >> str;
	
	string number = "";
	int result = 0;
	bool minus_flag = false;

	for (int i = 0; i <= str.length(); i++) {//****i๋ฅผ str์˜ ๊ธธ์ด๊นŒ์ง€ ํฌํ•จํ•ด์„œ ๋ฐ˜๋ณตํ•ด์ค˜์•ผ ํ•จ.
		if (str[i] == '+' || str[i] == '-' || i == str.length()) {
			if (minus_flag) {
				result -= stoi(number);
			}
			else {
				result += stoi(number);
			}
			minus_flag = (str[i] == '-') ? true : false;
			number = "";
		}
		else number += str[i]; //*****else ์•ˆ์จ์ค˜์„œ ์ด์ƒํ•˜๊ฒŒ ์—ฐ์‚ฐํ•œ ๊ฒƒ....
	}
	cout <<  result;

	return 0;
}
728x90