๋น์ฐํ ์๊ธฐ์ง๋ง, ๋ฌธ์ ๋ฅผ ์ ์ฝ๊ณ ํจํด์ ๋นจ๋ฆฌ ํ์ ํด์ผ ๋ฌธ์ ๋ฅผ ๋นจ๋ฆฌ ํด๊ฒฐํ ์ ์๋ค....
(ํนํ ์กฐ๊ฑด๋ค์ด ๋ณต์กํ ๋,,)
function solution(dartResult) {
const score = dartResult.split(/[^0-9]/).filter(v => v !== "")
const result = dartResult.split(/[0-9]/).filter(v => v !== "");
let sumAll = [];
result.map((v, i) => {
let sum = v[0] == "S" ? score[i] : v[0] == "D" ? score[i] ** 2 : score[i] ** 3;
if (!v[1]) {
sumAll.push(Number(sum));
}
if (v[1] == "#") {
sum = sum * -1;
sumAll.push(Number(sum));
}
if (v[1] == "*") {
if (i === 0) {
sum *= 2;
sumAll.push(Number(sum));
} else {
sumAll[i - 1] *= 2;
sumAll.push(sum * 2)
}
}
})
return sumAll.reduce((a, b) => a + b);
}
์ ๊ท์์ผ๋ก ๊ฐ ํ์ฐจ๋ฅผ ์ชผ๊ฐ์ค๋ค.
[ '1', '2', '3' ] [ 'S', 'D*', 'T' ]
๊ทธ๋ผ score, result ๊ฐ ์ด๋ฐ ์์ผ๋ก ๋์ด.
result arr ๋ฅผ map ์ผ๋ก ๋๋ฆฌ๋ฉฐ, ๋จผ์ ์ํ๋ฒณ์ ๋ฐ๋ฅธ ์ ์๋ฅผ ๋ง๋ค์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๊ธ์์ธ v[1] ์ ๊ธฐ์ค์ผ๋ก 2๋ฅผ ๊ณฑํ๊ฑฐ๋ -1๋ฅผ ๊ณฑํด์ค๋ค.
๊ฐ๊ณต์ด ๋ค ๋ ์ ์๋ scoreAll ์ ๋ฃ์ด์ค๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ์ ์ * ๊ฐ ์ด์ ์ ๋์๋ ๊ฒฝ์ฐ ์ด์ ์ ์๊น์ง ๋ณ๊ฒฝ๋๋ค๋ ์ ์ด๋ค.
3๋ผ์ด๋๊น์ง์ ์ ์๋ฅผ push ํด์ค ๋ค, reduce ๋ฅผ ์ด์ฉํด์ ํฉ์น ์ ์๋ฅผ return ํด์ค๋ค.
์ค๋ณต๋๋ ์ฝ๋๊ฐ ๋ง์๋ณด์ฌ์ ๊ณ ์ณ๋ณด๋ ค๊ณ ํ๋๋ฐ ํ ์ ์๋๋ค...
์ค๋๋ ํ์ด๋์์ ์์๋ฅผ..!
'ํ์ ๊ณต๋ถ > ๐ซง ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์น์์ด(2) (0) | 2023.07.13 |
---|---|
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ์ง๊ฟ (0) | 2023.07.11 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ๋ง์น ํ๊ธฐ (0) | 2023.07.04 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (0) | 2023.06.30 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์นด๋ ๋ญ์น (0) | 2023.06.28 |