์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์
์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
๋คํธ ๊ฒ์์ ์ด 3๋ฒ์ ๊ธฐํ๋ก ๊ตฌ์ฑ๋๋ค.
๊ฐ ๊ธฐํ๋ง๋ค ์ป์ ์ ์๋ ์ ์๋ 0์ ์์ 10์ ๊น์ง์ด๋ค.
์ ์์ ํจ๊ป Single(S), Double(D), Triple(T) ์์ญ์ด ์กด์ฌํ๊ณ ๊ฐ ์์ญ ๋น์ฒจ ์ ์ ์์์ 1์ ๊ณฑ, 2์ ๊ณฑ, 3์ ๊ณฑ (์ ์1 , ์ ์2 , ์ ์3 )์ผ๋ก ๊ณ์ฐ๋๋ค.
์ต์ ์ผ๋ก ์คํ์() , ์์ฐจ์(#)์ด ์กด์ฌํ๋ฉฐ ์คํ์() ๋น์ฒจ ์ ํด๋น ์ ์์ ๋ฐ๋ก ์ ์ ์ป์ ์ ์๋ฅผ ๊ฐ 2๋ฐฐ๋ก ๋ง๋ ๋ค. ์์ฐจ์(#) ๋น์ฒจ ์ ํด๋น ์ ์๋ ๋ง์ด๋์ค๋๋ค.
์คํ์()์ ์ฒซ ๋ฒ์งธ ๊ธฐํ์์๋ ๋์ฌ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์คํ์()์ ์ ์๋ง 2๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
์คํ์()์ ํจ๊ณผ๋ ๋ค๋ฅธ ์คํ์()์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์คํ์(*) ์ ์๋ 4๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
์คํ์(*)์ ํจ๊ณผ๋ ์์ฐจ์(#)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์์ฐจ์(#)์ ์ ์๋ -2๋ฐฐ๊ฐ ๋๋ค. (์์ 5๋ฒ ์ฐธ๊ณ )
Single(S), Double(D), Triple(T)์ ์ ์๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋ค.
์คํ์(*), ์์ฐจ์(#)์ ์ ์๋ง๋ค ๋ ์ค ํ๋๋ง ์กด์ฌํ ์ ์์ผ๋ฉฐ, ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
0~10์ ์ ์์ ๋ฌธ์ S, D, T, *, #๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ ๋ ฅ๋ ์ ์ด์ ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์
"์ ์|๋ณด๋์ค|[์ต์
]"์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด 3์ธํธ.
์) 1S2D*3T
์ ์๋ 0์์ 10 ์ฌ์ด์ ์ ์์ด๋ค.
๋ณด๋์ค๋ S, D, T ์ค ํ๋์ด๋ค.
์ต์ ์ *์ด๋ # ์ค ํ๋์ด๋ฉฐ, ์์ ์๋ ์๋ค.
์ถ๋ ฅ ํ์
function solution(dartResult) {
let forwardScore = 0;
let currentScore = 0;
let totalScore = 0;
for(let i = 0; i < dartResult.length; i++){
if(dartResult[i] === 'S'){
currentScore = currentScore * 1
}
else if(dartResult[i] === 'D'){
currentScore = currentScore ** 2;
}
else if(dartResult[i] === 'T'){
currentScore = currentScore ** 3
}
else if(dartResult[i] === '*'){
currentScore = currentScore * 2
forwardScore = forwardScore * 2
}
else if(dartResult[i] === '#'){
currentScore = currentScore * (-1)
}
else{
// cur์ ์ ์ด์ ์ ์๋ก ์ฎ๊ธฐ๊ณ ์ ์ ์๋ก ์
๋
if(dartResult[i] === '1' && dartResult[i+1] === '0'){
totalScore += forwardScore;
forwardScore = currentScore;
currentScore = 10
}
else if(dartResult[i] === '0' && dartResult[i-1] === '1'){
currentScore = 10
}
else{
totalScore += forwardScore;
forwardScore = currentScore;
currentScore = dartResult[i];
}
}
}
return totalScore + forwardScore + currentScore;
}
forwardScore
: ์ง์ ๋์ ์ ์์ซ์
๊ฐ์ด ๋ค์ด์ค๊ธฐ ์ง์ ๊น์ง์ ๊ฐ)currentScore
: ํ์ฌ ์งํ์ค์ผ๋ก ๊ณ์ฐ์ค์ธ ์ ์ totalScore
: ์ต์ข
๋์ ์ ์ dartResult[i]
์ ๊ฐ์ด ๋ฌธ์์ผ ๊ฒฝ์ฐ (S
, D
, T
, *
, #
)
dartResult[i]
์ ๊ฐ์ด S
์ผ ๊ฒฝ์ฐ currentScore
์ ๊ฐ์ 1์ ๊ณฑํ๋ค.
dartResult[i]
์ ๊ฐ์ด D
์ผ ๊ฒฝ์ฐ currentScore
์ ๊ฐ์ ์ ๊ณฑํ๋ค.
dartResult[i]
์ ๊ฐ์ด T
์ผ ๊ฒฝ์ฐ currentScore
์ ๊ฐ์ ์ธ์ ๊ณฑํ๋ค.
dartResult[i]
์ ๊ฐ์ด *
(์คํ์)์ผ ๊ฒฝ์ฐ
currentScore
์ forwardScore
์ 2๋ฅผ ๊ณฑํด์ค๋ค.
dartResult[i]
์ ๊ฐ์ด #
(์์ฐจ์)์ผ ๊ฒฝ์ฐ
currentScore
์ -1์ ๊ณฑํด์ค๋ค.
dartResult[i]
์ ๊ฐ์ด ์ซ์์ผ ๊ฒฝ์ฐ
์ซ์๊ฐ ๋ฑ์ฅํ๋ค๋ ๊ฒ์, ์
๋ ฅ ํ์์ธ ์ ์|๋ณด๋์ค|[์ต์
]
์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด ํ ์ธํธ๊ฐ ๋๋๊ณ , ์๋ก์ด ์ธํธ๊ฐ ๋ฑ์ฅํ๋ค๋ ๊ฒ! ๋ฐ๋ผ์
forwardScore
๋ฅผ totalScore
์ ๋์ ์ํค๊ณ ,
currentScore
๋ฅผ forwardScore
๋ก ๋ณ๊ฒฝ์์ผ์ฃผ๊ณ ,
์๋ก ๋ฑ์ฅํ ์ซ์๋ฅผ currentScore
๋ก ์ค์ ํด์ค๋ค.
ํ์ง๋ง...!
์ฌ๊ธฐ์ ๋ณต์กํ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ๋ฐ๋ก ์ซ์๊ฐ ์ต๋ ์ ์์ธ 10์ ์ธ ๊ฒฝ์ฐ..!
ํ ์๋ฆฌ ์ซ์๋ง ๊ณ ๋ คํ๋๋, 1์ 0์ ์ด ์ฐ๋ฌ์ ๋ค์ด์ค๋ ๊ฑธ๋ก ํ๋จ๋์ด ์ค๋ฅ๊ฐ ๋ฌ๋ค๐ฅฒ ๊ทธ๋์ ์๋ ๋ก์ง์ ์ ์ฉํ๋ค.
๋ง์ฝ dartResult[i]
์ ๊ฐ์ด 1์ด๊ณ dartResult[i+1]
์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ ์ฆ, ์๋กญ๊ฒ ๋ค์ด์จ ์ ์ ๊ฐ์ด 10์ธ ๊ฒฝ์ฐ
๋๋จธ์ง 1, 2 ๋ก์ง์ ๊ทธ๋๋ก๊ณ 3๋ก์ง์ currentScore = 10
๋ก ์ค์
์ด๋ ๊ฒ๋ง ํ๋๊น ๋ค์ ๊ฐ์ด
0
์ด๋ผ currentScore๊ฐ ๋ค์ 0์ด ๋์ด๋ฒ๋ฆผ
๊ทธ๋์dartResult[i]
๊ฐ0
์ด๊ณ ,dartResult[i-1]
๊ฐ1
์ธ ๊ฒฝ์ฐ๋ ๊ณ ๋ คํด์ฃผ์๋ค.
๊ทธ ๊ฒฝ์ฐ์๋ ์ด๋ฏธ 1, 2 ๋ก์ง์ ์คํ๋ ํ์ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ (1
,0
์์1
์ด ๋ค์ด์์ ๋!)currentScore = 10
๋ง ์ฐ์ฐํด ์ค๋ค.
for
๋ฌธ์ด ๋๋๊ณ ๋ง์ง๋ง forwardScore
์ currentScore
๋ totalScore
์ ์์ง ๋ํด์ง์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์
totalScore + forwardScore + currentScore
์ ๋ฆฌํดํด ์ค๋ค.
์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๊ธด ํ์ง๋ง ๊ทธ๋๋ ๋๋ง์ ์๊ฐ์ผ๋ก ํ์ด๋๋ค๋ ์ ์์ ๋๋ฆ... ๋ฟ๋ฏํ๋ค๐ ๋ธ๋ก๊น ํ๋ฉด์ ๋ค์ ํ๋ฒ ๋ด ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์ด๋ ๊ฒ ๊ธ๋ก ํ์ด๋ด๋ ๋ ํ์คํ๊ฒ ๋ก์ง์ ๊ธฐ์ตํ ์ ์์ ๊ฑฐ ๊ฐ๋ค...! ์ญ์ ๊ธฐ๋ก์ ์ค์ํด...!๐ฅน