출처 : 프로그래머스 코딩테스트 연습 - 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 메소드를 활용한 풀이
'알고리즘' 카테고리의 다른 글
프로그래머스 JS | 행렬 테두리 회전하기 (0) | 2022.07.06 |
---|---|
프로그래머스 JS | 오픈채팅방 (0) | 2022.07.02 |
프로그래머스 JS | 이상한 문자 만들기 (0) | 2022.06.29 |
프로그래머스 JS | 실패율 (0) | 2022.06.27 |
프로그래머스 JS | 모의고사 (완전탐색) (0) | 2022.06.25 |