처음으로 코딩테스트 문제를 풀어보았다.
기초 문제였지만, 쉽지 않았고, 솔직히 근무시간 내내 씨름했다.
아래는 내가 제출한 답이지만, 테스트 점수를 10점 받아 통과하지 못했다.
function solution(survey, choices) {
let ans = [],
score = [],
R=[], T=[], C=[], F=[], J=[], M=[], A=[], N=[],
ans_final = [],
ans_obj = {R:0, T:0, C:0, F:0, J:0, M:0, A:0, N:0};
for (i = 0; i < survey.length; i++){
if (choices[i] < 4) {
ans.push(survey[i][0]);
score.push(4-choices[i]);
} else if (choices[i] > 4){
ans.push(survey[i][1]);
score.push(choices[i]-4);
} else return;
switch (ans[i]) {
case 'R':
R.push(score[i]);
ans_obj.R = R.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'T':
T.push(score[i]);
ans_obj.T = T.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'C':
C.push(score[i]);
ans_obj.C = C.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'F':
F.push(score[i]);
ans_obj.F = F.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'J':
J.push(score[i]);
ans_obj.J = J.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'M':
M.push(score[i]);
ans_obj.M = M.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'A':
A.push(score[i]);
ans_obj.A = A.reduce((partialSum, a) => partialSum +a, 0);
break;
case 'N':
N.push(score[i]);
ans_obj.N = N.reduce((partialSum, a) => partialSum +a, 0);
break;
}
}
ans_obj.T > ans_obj.R ? ans_final.push('T') : ans_final.push('R');
ans_obj.F > ans_obj.C ? ans_final.push('F') : ans_final.push('C');
ans_obj.M > ans_obj.J ? ans_final.push('M') : ans_final.push('J');
ans_obj.N > ans_obj.A ? ans_final.push('N') : ans_final.push('A');
let answer = ans_final.reduce((partialSum, a) => partialSum+a, '');
return answer;
}
for 문을 사용한 순환은 사실 map 함수를 통해서 간단하게 처리할 수 있었다.
그리고 다른 사람들의 답을 보니 굉장히 심플하게 풀어서 놀랬다.
좌절이 되기도 했고...(map도 모르는 내가 할 수 있을까? 하는 생각이 잠시 들었다...)
다시 JS 문법 강의를 들으면서 내용을 복습해야겠다고 생각했다.
기초가 탄탄하면 멀리 갈 수 있으니까!!
화이팅!!
아래는 구글 검색을 이용하여 새로 작성한 코드
function solution(survey, choices) {
var answer = '';
let ans_obj = {
'R':0,
'T':0,
'C':0,
'F':0,
'J':0,
'M':0,
'A':0,
'N':0,
}
survey.map((value, i) => {
if(choices[i] < 4) ans_obj[value.substring(0,1)] += 4-choices[i]
if(choices[i] > 4) ans_obj[value.substring(1,2)] += choices[i] - 4
})
ans_obj.R >= ans_obj.T ? answer +='R' : answer +='T';
ans_obj.C >= ans_obj.F ? answer +='C' : answer +='F';
ans_obj.J >= ans_obj.M ? answer +='J' : answer +='M';
ans_obj.A >= ans_obj.N ? answer +='A' : answer +='N';
return answer;
}
'TIL(today i learned) > 프로그래머스-코딩테스트' 카테고리의 다른 글
| [연습문제] [Lv.1] 자릿수 더하기 (0) | 2022.11.11 |
|---|---|
| [연습문제][Lv.1] 약수의 합 (0) | 2022.11.11 |
| [연습문제] [Lv.1] 평균 구하기 (0) | 2022.11.11 |
| [연습문제] [Lv.1] 짝수와 홀수 (0) | 2022.11.11 |
| [Lv.1] 신고결과 받기 (0) | 2022.09.02 |