728x90
난이도 : Lv. 1
풀이일 : 2412242
https://school.programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
풀이 코드
function solution(dartResult) {
let answer = []
nums = dartResult.replaceAll('10', 'X')
bonus = {'S': 1, 'D': 2, 'T': 3}
for (n of nums) {
if (n in bonus) {
answer[answer.length - 1] **= bonus[n]
}
else if (n == '*') {
answer[answer.length - 1] *= 2
answer[answer.length - 2] *= 2
}
else if (n == '#') {
answer[answer.length - 1] *= -1
}
else {
answer.push(n != 'X' ? Number(n) : 10)
}
}
return answer.reduce((acc, cur) => acc + cur)
}
- 숫자는 0 ~ 10까지 있으므로 10이 한 글자씩 잘려 1, 0으로 처리되지 않도록 X로 치환
- S, D, T 보너스 정보 저장
- nums에 있는 모든 요소에 대해 각 분류에 맞는 작업을 수행
- 만약 보너스에 해당하는 S, D, T가 주어지면, answer 배열에 가장 최근에 저장된 숫자 bonus 승을 계산해 재할당
- *이 주어진다면, 최근 두 숫자에 *2
- #이 주어진다면 최근 숫자에 * -1
- 그 외는 숫자가 주어지므로 주어진 숫자를 answer 배열에 추가
- 최종적으로 저장된 숫자들의 합을 리턴
실행화면
느낀점
- 자스는 자바랑 더 비슷한 거 같기도 하고 파이썬이랑 더 비슷한 것 같기도 하고
- answer 배열에 저장된 숫자가 한 개 밖에 없어서 이상한 요소에 접근하려고 해도 에러를 안내서 좋다. 될거 같아서 해봤는데 진짜 됨!
'알고리즘 > Lv. 1' 카테고리의 다른 글
프로그래머스 86491 최소직사각형 자바스크립트 풀이 (0) | 2024.12.24 |
---|---|
프로그래머스 86491 최소직사각형 자바 풀이 (0) | 2024.12.24 |
프로그래머스 86491 최소직사각형 파이썬 풀이 (0) | 2024.12.24 |
프로그래머스 12935 제일 작은 수 제거하기 자바스크립트 풀이 (1) | 2024.12.20 |
프로그래머스 17682 다트 게임 자바 풀이 (0) | 2024.12.17 |