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;
}
회고🧐
카카오 코테에서는 항상 정규식이 나오는거 같음. 정규식 공부가 필요! & 소스코드 좀 줄일 수 있으면 줄이기!
'코딩테스트' 카테고리의 다른 글
[1일1코👨🏻💻] Lv.2 기능개발.js - 프로그래머스 (0) | 2020.11.12 |
---|---|
[1일1코👨🏻💻] Lv.1 실패율.js - 프로그래머스 (0) | 2020.11.06 |
[1일1코👨🏻💻] Lv.1 예산.js - 프로그래머스 (0) | 2020.11.04 |
[1일1코👨🏻💻] Lv.1 키패드 누르기.js - 프로그래머스 (0) | 2020.11.02 |
[1일 1코👨🏻💻] Lv.1 직사각형 별찍기.js - 프로그래머스 (0) | 2020.10.28 |
댓글