🚩 문제 주소
https://programmers.co.kr/learn/courses/30/lessons/17682
(2021년 12월 31일에 푼 문제입니다.)
📄 접근 방법
구현
더보기
- 10은 '1','0'으로 따로 저장되기 때문에 다른 문자로 바꿔서 저장합니다.
- dartResult를 for문으로 각 문자마다 조건을 확인합니다.
2-1. 숫자로 나타낼 수 있는 문자면 숫자로 바꿔서 stack에 저장합니다.
2-2. 10에 해당하는 문자가 확인되면 숫자 10으로 바꿔서 저장합니다.
2-3. S,D,T에 해당하면 answer리스트에 stack에 있는 숫자를 pop해서 각 조건에 해당하는 거듭제곱만큼 곱해서 저장합니다.
2-4. 일 경우, 첫번째 이 아니면 해당하는 answer와 그 전 answer를 2배해서 저장,첫번째면 그것만 2배해서 저장합니다.
2-5. #일 경우, 해당하는 answer를 -1배해서 저장합니다. - answer리스트를 모두 더해서 리턴합니다.
👨💻 나의 코드
function solution(dartResult) {
const answer = [];
let temp = 0;
for (let i = 0; i < dartResult.length; i++) {
if (parseInt(dartResult[i]) >= 0 && parseInt(dartResult[i]) <= 9) {
if (parseInt(dartResult[i]) === 1 && parseInt(dartResult[i + 1]) === 0) {
temp = 10;
i++;
} else {
temp = dartResult[i];
}
} else if (dartResult[i] === "S") answer.push(temp ** 1);
else if (dartResult[i] === "D") answer.push(temp ** 2);
else if (dartResult[i] === "T") answer.push(temp ** 3);
else if (dartResult[i] === "*") {
answer[answer.length - 2] *= 2;
answer[answer.length - 1] *= 2;
} else if (dartResult[i] === "#") answer[answer.length - 1] *= -1;
}
return answer.reduce((acc, cur) => acc + cur, 0);
}
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스 / Python, JS] 키패드 누르기 - Level 1 (0) | 2023.03.22 |
---|---|
[프로그래머스 / Python] 숫자 문자열과 영단어 - Level 1 (0) | 2023.03.22 |
[프로그래머스 / Python] 비밀지도 - Level 1 (0) | 2023.03.22 |
[프로그래머스 / Python] 크레인 인형뽑기 게임 - Level 1 (0) | 2023.03.22 |
[프로그래머스 / JS] 큰 수 만들기 - Level 2 (0) | 2023.03.22 |