728x90
테스트케이스 최대 소요시간 : 0.31ms
문제 요약
// survey = 문제별 점수 해당 유형
// choices = 선택된 답변
제출답안
function solution(survey, choices) {
let addingText = {R:0, T:0, C:0, F:0, J:0, M:0, A:0, N:0 } ;
choices.forEach((choice, index)=>{
switch(choice){
case 1 : addingText[ survey[index][0] ] += 3; break;
case 2 : addingText[ survey[index][0] ] += 2; break;
case 3 : addingText[ survey[index][0] ] += 1; break;
case 5 : addingText[ survey[index][1] ] += 1; break;
case 6 : addingText[ survey[index][1] ] += 2; break;
case 7 : addingText[ survey[index][1] ] += 3; break;
}
})
let answer = '';
answer += (addingText["R"] < addingText["T"]) ? "T" : "R" ;
answer += (addingText["C"] < addingText["F"]) ? "F" : "C" ;
answer += (addingText["J"] < addingText["M"]) ? "M" : "J" ;
answer += (addingText["A"] < addingText["N"]) ? "N" : "A" ;
return answer;
}
문제해설
function solution(survey, choices) {
let addingText = {R:0, T:0, C:0, F:0, J:0, M:0, A:0, N:0 } ;
// 답변의 점수를 합산할 map. R이 3점인 답을 고른 경우 addingText[R] += 3
choices.forEach((choice, index)=>{ // 답변을 전체순회
switch(choice){
// 답변이 1,2,3 인 경우 survey 어레이의 같은 index에서 앞글자를 찾아
// addingText에서 이름이 동일한 키를 찾아 가산점수를 더해줍니다.
// 답변이 5,6,7 인경우 위와 같되, 뒷글자를 찾아 더해줍니다.
case 1 : addingText[ survey[index][0] ] += 3; break;
case 2 : addingText[ survey[index][0] ] += 2; break;
case 3 : addingText[ survey[index][0] ] += 1; break;
case 5 : addingText[ survey[index][1] ] += 1; break;
case 6 : addingText[ survey[index][1] ] += 2; break;
case 7 : addingText[ survey[index][1] ] += 3; break;
}
});
// 순회문이 종료되며, 각 문자별 점수가 addingText에 저장되어 있습니다.
let answer = '';
// 리턴할 유형 추출. 점수가 동일한 경우 앞글자를 가져오도록 합니다
answer += (addingText["R"] < addingText["T"]) ? "T" : "R" ;
answer += (addingText["C"] < addingText["F"]) ? "F" : "C" ;
answer += (addingText["J"] < addingText["M"]) ? "M" : "J" ;
answer += (addingText["A"] < addingText["N"]) ? "N" : "A" ;
return answer;
}
제일 좋아요가 많은 답변은 로직은 같았지만, swtich문으로 표현한 부분을 (제출답안 5~12라인)
addingText[choice > 4 ? survey[index][0] : survey[index][1] ] += Math.abs(choice - 4);
라고 한줄로 표현했고,
리턴할 answer를 추출하는 구문을 (제출답안 14~21 라인)
const types = ["RT","CF","JM","AN"];
return types.map(([a, b]) => addingText[b] > addingText[a] ? b : a).join("");
라고 짜두어 간결했다. 다만 소요 시간은 로직 없이 확인만 거치는 내 코드가 더 짧았다.
#99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #TIL
728x90
'코테' 카테고리의 다른 글
[JS] 시저 암호 (0) | 2024.04.15 |
---|---|
[Java] 정수 제곱근 판별 (0) | 2024.04.11 |
[java] 붕대감기 (해설포함) (1) | 2024.04.09 |
[Java] 없는 숫자 더하기 (0) | 2024.04.08 |
[JS] 나누어 떨어지는 숫자 배열 (0) | 2024.04.07 |
댓글