코딩테스트
[1일1코👨🏻💻] Lv.1 [1차]다트게임.js - 프로그래머스
Jacob93
2020. 11. 9. 23:16
2020.11.09
출처 : 프로그래머스
📝문제
✏️해답
function solution(dartResult) {
let answer = 0;
let itemDigit = dartResult.split(/\D/);
let itemOption = dartResult.split(/\d/);
let cleanDigit=[];
let cleanOption=[];
let result = [];
/// 1. dartResult 를 3개의 아이템으로 분리작업.
/// 2. 계산
for(let i=0;i<itemDigit.length;i++){
itemDigit[i]!=''? cleanDigit.push(itemDigit[i]):null;
}
for(let i=0;i<itemOption.length;i++){
itemOption[i]!=''?cleanOption.push(itemOption[i]):null;
}
for(let i=0;i<3;i++){
/// cleanOption이 1자리가 아닌경우.
if(cleanOption[i].length != 1){
if(cleanOption[i].split('')[1]=='#'){
if(cleanOption[i].split('')[0]=='S'){
result.push(cleanDigit[i]*(-1));
}else if(cleanOption[i].split('')[0]=='D'){
result.push(cleanDigit[i]*cleanDigit[i]*(-1));
}else{
result.push(cleanDigit[i]*cleanDigit[i]*cleanDigit[i]*(-1));
}
}else{
if(cleanOption[i].split('')[0]=='S'){
result.push(cleanDigit[i]*2);
i==0 ? null :result[i-1] = result[i-1]*2;
}else if(cleanOption[i].split('')[0]=='D'){
result.push(cleanDigit[i]*cleanDigit[i]*2);
i==0 ? null : result[i-1] = result[i-1]*2;
}else{
result.push(cleanDigit[i]*cleanDigit[i]*cleanDigit[i]*2);
i==0 ? null : result[i-1] = result[i-1]*2;
}
}
}
/// 옵션 없는 경우
else{
if(cleanOption[i]=='S'){
result.push(parseInt(cleanDigit[i]));
}else if(cleanOption[i]=='D'){
result.push(cleanDigit[i]*cleanDigit[i]);
}else{
result.push(cleanDigit[i]*cleanDigit[i]*cleanDigit[i]);
}
}
}
for(let i=0;i<3;i++){
answer+=result[i];
}
return answer;
}
회고🧐
카카오 코테에서는 항상 정규식이 나오는거 같음. 정규식 공부가 필요! & 소스코드 좀 줄일 수 있으면 줄이기!