28일차 알고리즘
다트게임 풀이
이거는 문제가 복사가 힘들어서 링크로 남겨야 겠다.
https://programmers.co.kr/learn/courses/30/lessons/17682
const isBonus = ["S", "D", "T"]//보너스를 구분하기 위해 배열에 저장
function solution(dartResult) {
const answer = []
let score = "" //점수만 뽑아서 저장하는 변수
for(let i = 0; i < dartResult.length; i++){
//console.log( Number(dartResult[i]), dartResult[i])
if( isNaN( dartResult[i]) === false){
//숫자가 타입으로 변환한 데이터의 결과가 NaN 값이 아닌 경우 (= 숫자가 맞는 경우)
//console.log(Number(dartResult[i]))
score += dartResult[i]
}else{
//숫자 타입으로 변환한 데이터의 결과가 NaN 값이 맞는 경우(= 숫자가 아닌경우)
//console.log(dartResult[i])
if(isBonus.includes(dartResult[i])){
//보너스 처리("S", "D", "T")
//console.log(dartResult[i])
score = Number(score)
if(dartResult[i] === "D"){
//score = score ** 2 더블일 경우에는 2제곱
score = Math.pow(score, 2)
}else if(dartResult[i] === "T"){
score = score ** 3//트리플일 경우 3제곱
}
answer.push(score)
score = ""
}else{
//옵션처리 ("*","#")
//console.log(dartResult[i])
if(dartResult[i] === "#"){
//아차상일 경우: 해당점수를 마이너스한다.
answer[ answer.length - 1] *= -1
}else{
//스타상일 경우: 해당점수에 2를 곱한다.
answer[ answer.length -1] *= 2
//현재 게임이 2번쨰 게임 이상일 경우만
if(answer.length > 1){
//앞에 있는 정수까지 2배로 만들어준다.
answer[answer.length - 2] *= 2
}
}
}
}
//console.log(score)
}
//console.log(answer)
return answer.reduce((acc,cur) => acc + cur)
}
Author And Source
이 문제에 관하여(28일차 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gusahr119/28일차-알고리즘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)