개발 공부/알고리즘 문제 풀이
[프로그래머스] [1차] 다트 게임 (JavaScript)
종범2
2020. 6. 2. 22:22
문제
프로그래머스 2018 KAKAO BLIND RECRUITMENT [1차] 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
언어
자바스크립트(JavaScript)
접근 방법
- 다트 숫자가 10인 경우와 아닌 경우로 분리한다. 10인 경우는 index를 하나 더 늘려서 검사해야 하기 때문이다.
- 보너스가 D면 제곱, T면 세제곱을 한다.
- 옵션이 *면 2를 곱하고 이전 값이 존재하면 그 값도 2를 곱한다.
- 옵션이 #이면 -1을 곱한다.
- 배열에 저장한다.
- 배열 값을 모두 더한다.
코드
function solution(dartResult) {
let answer = 0;
let numArr = [];
for (let i=0; i<dartResult.length; i=i+2){
let point;
// 10인 경우와 아닌 경우로 분리
if(i+1<dartResult.length && dartResult[i+1] === '0'){
point = 10;
i++
}else{
point = parseInt(dartResult[i]);
}
let bonus = dartResult[i+1];
// D면 제곱, T 면 세제곱
if(bonus === 'D'){
point *= point;
}else if (bonus === 'T'){
point *= point*point;
}
// * 이면 현재 값과 이전값 2배, #이면 현재값 -1
if(i+2<dartResult.length && dartResult[i+2] === '*'){
point *= 2;
if(numArr.length !==0){
numArr[numArr.length-1] *= 2;
}
i++
}else if (i+2<dartResult.length && dartResult[i+2] === '#'){
point *= -1;
i++;
}
numArr.push(point);
}
console.log(numArr);
for (let i=0; i<numArr.length; i++){
answer += numArr[i];
}
return answer;
}
복기
- 어렵지 않게 풀었다.