๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/Algorithm

[๋ฐฑ์ค€][Node.js] 1541๋ฒˆ : ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 7. 5.

 

 

Algorithm

-  ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ -

 


 

๋ฌธ์ œ

์„ธ์ค€์ด๋Š” ์–‘์ˆ˜์™€ +, -, ๊ทธ๋ฆฌ๊ณ  ๊ด„ํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ๋ชจ๋‘ ์ง€์› ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

 

๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

๋ฌธ์ œ ํ’€๊ธฐ

const readline = require("readline");
const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});
let input;
rl.on("line", function (line) {
	input = line.toString().trim().split("");
}).on("close", function () {
  let number = [];
	// STEP01. ์ˆซ์ž ์ชผ๊ฐœ๊ธฐ
while (true) {
	let plus = input.lastIndexOf("+");
	let minus = input.lastIndexOf("-");
	if (plus > minus) {
		number.unshift(Number(input.splice(plus).join("")));
	} else if (minus > plus) {
		number.unshift(Number(input.splice(minus).join("")));
	} else if (plus !== -1 && minus === -1) {
		number.unshift(Number(input.splice(plus).join("")));
	} else if (minus !== -1 && plus === -1) {
		number.unshift(Number(input.splice(minus).join("")));
	} else if (input.length !== 0) {
		number.unshift(Number(input.splice(0).join("")));
	}
	if (input.length === 0) break;
}

// STEP02. ์ˆซ์ž ๊ฐ„์ถ”๋ฆฌ๊ธฐ
let result = [];
let isMinus = false;
let caculate = 0;
let i = 0;
while (i < number.length) {
	if (number[i] < 0) {
		isMinus = true;
		caculate += Math.abs(number[i]);
		if (number[i + 1] < 0 || i === number.length - 1) {
			result.push(Number("-" + caculate));
			isMinus = false;
			caculate = 0;
		}
	} else if (number[i] >= 0) {
		if (isMinus) {
			caculate += number[i];
			if (i === number.length - 1) {
				result.push(Number("-" + caculate));
				isMinus = false;
				caculate = 0;
			}
		} else {
			result.push(number[i]);
		}
	}
	i++;
}

console.log(result.reduce((past, curr) => past + curr, 0));
	process.exit();
});

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€