728x90
우선 점수를 3번 받기에, 각 점수를 계산할 수 있도록 첫번째,두번째,세번째의 점수를 계산할 리스트를 하나 만들고, 정규표현식을 활용해서 옵션을 뺄 수 있도록 하였다.
이후 점수계산을 하기위해서 정규표현식을 한번 더 활용해보았다.
점수 , 보너스 , 옵션을 분리해서 저장하였고
우선적으로 해당 회차의 점수를 점수 ** 보너스로 계산을 해주었다.
옵션이 있는경우에는 옵션에 따라서 동작을 하도록 설정해주었다.
function solution(dartResult) {
const dart = dartResult.match(/[0-9]+[SDT][*#]?/g);
const ret = [0,0,0]
const bonusList = {
'S' : 1,
'D' : 2,
'T' : 3,
}
dart.forEach( (scoreInfo,idx) => {
const score = scoreInfo.match(/[0-9]+/g)[0]
const bonus = scoreInfo.match(/[SDT]/g)[0]
const opt = scoreInfo.match(/[*#]/g)
ret[idx] = score ** bonusList[bonus]
if (opt) {
if (opt[0]==="*") ret[idx] *=2
if (opt[0]==="*" && idx>0) ret[idx-1] *=2
if (opt[0]==="#") ret[idx] *= -1
}
})
return ret.reduce((a,c) => a+c , 0);
}
나름 가독성 좋게? 잘 짠거같다. 다른사람들의 코드를 보니 정규표현식을 조금 더 공부하면 좋을꺼 같단 생각을 하게 된 문제였다...
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 하샤드 수 (0) | 2023.05.02 |
---|---|
[JS] 소수만들기 (0) | 2023.05.02 |
[JS] 완주하지 못한 선수 (0) | 2023.04.28 |
[JS] K번째 수 (0) | 2023.04.27 |
[JS] 모의고사 (0) | 2023.04.25 |