문제
프로그래머스 2018 KAKAO BLIND RECRUITMENT [1차] 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682
언어
자바스크립트(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;
}
복기
- 어렵지 않게 풀었다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 문자열 압축 (JavaScript) (0) | 2020.06.04 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 (JavaScript) (0) | 2020.06.04 |
[프로그래머스] [1차] 비밀지도 (JavaScript) (0) | 2020.06.02 |
[프로그래머스] 실패율 (JavaScript) (2) | 2020.06.02 |
[프로그래머스] 후보키 (JavaScript) (4) | 2020.06.01 |