https://school.programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
실행코드
function solution(dartResult) {
var answer = 0;
let score = 0;
let cnt = [];
for (let i = 0; i < dartResult.length; i++) {
//점수가 주어질때
if (!isNaN(dartResult[i])) {
//i-1이 1이고 i가 숫자면 10점..
//즉 10점인 경우와 그 외의 경우 처리
score = Number(dartResult[i - 1]) === 1 ? 10 : Number(dartResult[i]);
//보너스 S일때
} else if (dartResult[i] === "S") {
cnt.push(score);
//보너스 D일때
} else if (dartResult[i] === "D") {
cnt.push(Math.pow(score, 2));
//보너스 T일때
} else if (dartResult[i] === "T") {
cnt.push(Math.pow(score, 3));
//옵션 *일떄
} else if (dartResult[i] === "*") {
cnt[cnt.length - 2] = cnt[cnt.length - 2] * 2;
cnt[cnt.length - 1] = cnt[cnt.length - 1] * 2;
//옵션 #일때
} else if (dartResult[i] === "#") {
cnt[cnt.length - 1] = -1 * cnt[cnt.length - 1];
}
}
//3개의 점수 합산
answer = cnt.reduce((acc, cur) => acc + cur, 0);
return answer;
}
풀이
dartResult를 for문으로 돌면서 숫자 여부를 판별.
이때 10은 2글자라서 이전 것이 1이고 현재가 숫자이면 10으로 판별.
그리고 각 조건에 맞게 cnt에 push해주었다
'알고리즘 > test' 카테고리의 다른 글
javascript) 프로그래머스 - 직사각형 별찍기 (0) | 2023.02.22 |
---|---|
javascript) 프로그래머스 - [1차] 비밀지도 (0) | 2023.02.22 |
javascript) 프로그래머스 - 모의고사 (0) | 2023.02.20 |
javascript) 프로그래머스 - 카드 뭉치 (0) | 2023.02.20 |
javascript) 프로그래머스 - 실패율 (0) | 2023.02.20 |