Algorithm/Programmers
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋คํธ ๊ฒ์
๊ฐ๋ฐ๊ฐ๊ตด๐ธ
2022. 9. 18. 17:40
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/17682
[ํ์ด]
๋ฌธ์ ์ ํต์ฌ์ ์ ๊ท์์ ํ์ฉํด S,D,T,*,#์ ๊ฐ์ ์ฐ์ฐ์์, ์ซ์๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
์์ 1๋ฒ 1S2D*3T๋ฅผ ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ซ์๋ฅผ [1, 2, 3]์ผ๋ก ๋ถ๋ฆฌ(num[]) => dartResult.split(/[S|D|T|*|#]/).filter((e) => e !== '').map(Number)
- ์ฐ์ฐ์๋ฅผ [S, D*, T]์ผ๋ก ๋ถ๋ฆฌ(opt[]) => dartResult.split(/[0-9]/).filter((e) => e !== '')
๋ค์์ผ๋ก 1, 2, 3์ ๊ฐ๊ฐ ์ฐ์ฐ์์ ๋งค์นํ์ฌ ๊ณ์ฐ์ ์งํํ๋ฉฐ ๊ฐ๊ฐ ret๋ฐฐ์ด์ ์ ์ฅํฉ๋๋ค.
(*์ด ๋์์ ๊ฒฝ์ฐ ์ด์ ์ซ์๋ฅผ ํ์ฉํด์ผ ํ๋ฏ๋ก ret๋ฐฐ์ด์ ๊ฐ๊ฐ ์ฐ์ฐ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ผ ํจ)
- S, D, T ๊ธฐ๋ณธ์ฐ์ฐ์ ์งํํ์ฌ ret์ ๊ธฐ๋ณธ ์ฐ์ฐ๊ฐ์ ์ ์ฅ
- ๋ง์ฝ ํ์ฌ i๋ฒ์งธ ์ฐ์ฐ์ค์ผ ๋, opt[i]์ ๊ธธ์ด๊ฐ 2๋ผ๋ฉด ์ถ๊ฐ์ฐ์ฐ์ ์งํ
๋ฐ๋ผ์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ret ๋ฐฐ์ด์ [2, 8, 27]์ด๋ฏ๋ก 2+8+27 = 37์ด ๋ฉ๋๋ค.
[์ฝ๋]
function solution(dartResult) {
var answer = 0;
const num = dartResult.split(/[S|D|T|*|#]/).filter((e) => e !== '').map(Number);
const opt = dartResult.split(/[0-9]/).filter((e) => e !== '');
const ret = Array.from({length: 3}, () => 0);
for(let i=0;i<3;i++) {
// ๊ธฐ๋ณธ ์ฐ์ฐ
if(opt[i][0] === 'S') {
ret[i] = num[i];
} else if(opt[i][0] === 'D') {
ret[i] = num[i]*num[i];
} else if(opt[i][0] === 'T') {
ret[i] = num[i]*num[i]*num[i];
}
// ์ถ๊ฐ ์ฐ์ฐ
if(opt[i].length === 2) {
// ๊ณฑ์
if(opt[i][1] === '*') {
ret[i] *= 2;
if(i > 0) {
ret[i-1] *= 2;
}
}
// ๋ง์ด๋์ค
if(opt[i][1] === '#') {
ret[i] = ret[i]*-1;
}
}
}
for(let i=0;i<3;i++) {
answer += ret[i];
}
return answer;
}