function solution(dartResult) {
let answer = 0;
const re = /[SDT*#]/g;
let numbers = dartResult
.replace(re, '?')
.split('?')
.filter((x) => x !== '')
.map((x) => Number(x));
let calculations = dartResult
.replace(/[0123456789]/g, '!')
.split('!')
.filter((x) => x !== '');
let temp;
for (let i = 0; i < 3; i++) {
if (calculations[i].includes('D')) {
numbers[i] **= 2;
} else if (calculations[i].includes('T')) {
numbers[i] **= 3;
}
if (calculations[i].includes('#')) {
numbers[i] *= -1;
} else if (calculations[i].includes('*')) {
numbers[i - 1] *= 2;
numbers[i] *= 2;
}
}
answer = numbers.reduce((acc, cur) => acc + cur);
return answer;
}
์ฝ๋ฉํ ์คํธ ์ฐ์ต - [1์ฐจ] ๋คํธ ๊ฒ์
programmers.co.kr
๋ค์ ์ ๋ฅผ ๋จน์๋ ๋ฌธ์ .
์ผ๋จ ์ ๊ท์(regex)๋ฅผ ํ์ฉํ ์ค ์๋ฉด ํจ์ฌ ์์ํ๊ฒ ํ ์ ์๋ค.
์ ๊ท ํํ์
const re = /[abcde]/g
// [] ๋ด๋ถ์ ๋ชจ๋ ๋ฌธ์๋ค์ ๊ฐ๊ฐ ๋ฐ์์จ๋ค. ์ฌ๊ธฐ์ g๋ global๋ก ๋ชจ๋ a, b, c, d, e๋ฅผ ํํ. g๊ฐ ์๋ค๋ฉด ๋จ ํ๊ฐ์ ๋ฌธ์๋ง ๋ฐ๊ฒ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ผ๋จ ์์ ํํ๋ง ๊ธฐ์ตํด๋ ์ ๋ง ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ค.
์ ๋ฌธ์ ์ ๊ฒฝ์ฐ
- ์ฃผ์ด์ง ๋ฌธ์์ด์ [์ ์๋ถ๋ถ], [์ฐ์ฐ๋ถ๋ถ]์ 2๊ฐ์ง ๋ฐฐ์ด๋ก ๋๋์ด์ฃผ์๋ค.(์ฌ๊ธฐ์ ๊ฐ๊ฐ ?์ !๋ฅผ ๋ฃ์๊ฑด ๊ทธ์ splitํ ๊ธฐ์ค ๋ฌธ์๋ฅผ ๋ฃ์ด์ค ๊ฒ
- ๋ ๋ฐฐ์ด ๋ชจ๋ ๊ธธ์ด๋ 3์ผ๋ก ๋์ผํ index์ ๋ํด ์ซ์๋ฐฐ์ด์ ๊ฐ์ด ์ฐ์ฐ๋ฐฐ์ด์ ๊ณ์ฐ์ด ์ด๋ฃจ์ด์ง๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ํตํด ๊ณ์ฐํ์ฌ answer์ push
- answer์ ํฉ๊ณ๋ฅผ returnํ๋ค.
์กฐ๊ธ ํค๋งธ๋ ๋ถ๋ถ์ ์ ์๊ฐ 10์ ์ธ ๊ฒฝ์ฐ ์ด๊ฒ์ 1, 0 ์ด ์๋ 10์ผ๋ก ์ซ์๋ฐฐ์ด์ ์ง์ด๋ฃ๋ ๊ฒ์ด์๋ค.
์ ๊ท์์ ํ์ฉํ์ฌ ์ฐ์ฐ๊ด๋ จ ๊ธฐํธ๋ค์ ?๋ก ๋์ฒดํ๊ณ ๊ทธ์ ๋ํด splitํ์ฌ ํด๊ฒฐํ ์ ์์๋ค.
'๐ JavaScript > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] 2019์นด์นด์ค - ์คํจ์จ (0) | 2022.06.28 |
---|---|
[JS] 2018์นด์นด์ค - ๋น๋ฐ์ง๋ (0) | 2022.06.28 |
[JS] ์ฐ์ต๋ฌธ์ - ๋ฌธ์์ด ๋ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ (0) | 2022.06.26 |
[JS] ์ฐ์ต๋ฌธ์ - ์์ ์ฐพ๊ธฐ (0) | 2022.06.25 |
[JS] ์ฐ์ต๋ฌธ์ - ์๋ฐ์๋ฐ์๋ฐ์? (0) | 2022.06.24 |