알고리즘
프로그래머스 JS | [1차] 다트게임
3jun
2022. 6. 30. 21:49
출처 : 프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [1차] 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682
✅ Solution
function solution(dartResult) {
const dartArr = dartResult.split('');
const stack = [];
const sum = [];
for( let i = 0; i < dartArr.length; i++) {
if( !isNaN(dartArr[i])) {
if(dartArr[i] === '0' && dartArr[i -1] === '1') {
stack.pop();
stack.push(10);
} else {
if( stack.length > 0) sum.push(stack.pop());
stack.push(+dartArr[i])
}
}
if(dartArr[i] === 'S') stack[0] = Math.pow(stack[0],1);
if(dartArr[i] === 'D') stack[0] = Math.pow(stack[0],2);
if(dartArr[i] === 'T') stack[0] = Math.pow(stack[0],3);
if(dartArr[i] === '*') {
stack[0] = stack[0] * 2;
if(sum.length > 0) {
const num = sum.pop() * 2;
sum.push(num);
}
}
if(dartArr[i] === '#') {
stack[0] = stack[0] * -1;
}
}
if(stack.length > 0) sum.push(stack[0])
return sum.reduce((acc,cur) => acc + cur);
}
참고
- Stack 구조를 활용한 풀이
- 정규표현식과 match 메소드를 활용한 풀이