[๋ฐฑ์ค 1541๋ฒ] ์์ด๋ฒ๋ฆฐ ๊ดํธ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs)
https://www.acmicpc.net/problem/1541
const input = require('fs').readFileSync('dev/stdin').toString().trim().split('-');
function sumValue(arr) {
if (!arr.length) return 0;
return +arr.split('+').reduce((pre, cur) => +pre + +cur);
}
console.log(input.reduce((prev, cur) => prev - sumValue(cur), sumValue(input[0]) * 2));
์๋ค์ํผ ์๋ฐ์คํฌ๋ฆฝํธ์๋ eval()์ด๋ผ๋ ์์ฃผ ์ข์ ํจ์๊ฐ ์๋ค.
eval('50+50')์ ์์ ๊ดํธ๋ฅผ ๊ณ์ฐํด '100'์ ๋ฆฌํดํด์ค๋ค. ํด๋น ๋ฌธ์ ์ ์ฌ์ฉํ๋๋ฐ ๊ณ์ ํ๋ ธ์ต๋๋ค๊ฐ ๋์จ๋ค..
์ฐพ์๋ณด๋ ๋ค๋ฅธ ๋ถ๋ค๋ ๊ทธ๋ฐ ๋ถ๋ค์ด ๋ง์ ๊ฒ ๊ฐ์๋ค. ์ด์ ๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค.
ํ์ด์ฌ์ ์์ 0์ด ๋ถ์ ์ ๋ ฅ๊ฐ์ eval์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋์ค๋๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ eval( ' 0003 + 0003' ) ํ๋ฉด 6์ด ์ด์๊ฒ ๋์ค๋๋ฐ๋ ๋ง์ด๋ค.
ํด๋น ๋ฌธ์ ๋ '-' ๋ฅผ ๊ธฐ์ค์ผ๋ก splitํ๊ณ ์ฒ์ ๊ฐ์ ๋๋จธ์ง ๋ฐฐ์ด๋ค ๋ด๋ถ๋ฅผ ํฉํด์ฃผ๊ณ ๋ค ๋นผ์ฃผ๋ฉด ๋๋ค.
ex) 10+20-40+10 => ['10+20', '40+10'] => [30, 50] => -20
๊ดํธ์ ๊ฐ์์ ์ ํ์ด ์์ผ๋ฏ๋ก -๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋๋ฉด +๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ์ป์ ์ ์๋ค.
ํด๋น ๊ฐ๋ค์ ๋ค ๋ํด์ฃผ๊ณ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ์์ ๋นผ์ฃผ๋ ๊ฒ ๊ฐ์ ์ต์๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ๋นผ์ฃผ๋ฉด ๋๋ค.