728x90
[문제]
[풀이코드]
function solution(survey, choices) {
var answer = '';
const mbti = {'R': 0, 'T': 0, 'C': 0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0};
for(let i = 0; i < survey.length; i++){
if(choices[i] === 4){
continue;
}
survey[i] = survey[i].split("");
if(choices[i] > 4){
mbti[survey[i][1]] += choices[i] - 4;
}
else if(choices[i] < 4){
mbti[survey[i][0]] += 4 - choices[i];
}
}
console.log(mbti['R'], mbti['T'])
mbti['R'] >= mbti['T'] ? answer += 'R' : answer += 'T';
mbti['C'] >= mbti['F'] ? answer += 'C' : answer += 'F';
mbti['J'] >= mbti['M'] ? answer += 'J' : answer += 'M';
mbti['A'] >= mbti['N'] ? answer += 'A' : answer += 'N';
return answer;
}
[해설]
우선 mbti라는 객체를 만들어서 각각의 점수가 들어갈 공간을 만들었다.
survey 질문을 끝까지 돌리는데 choices[i]가 4 즉 모르겠음을 고른다면 점수가 똑같으므로 continue로 넘겨준다.
그리고 survey[i]를 쪼개는데 예를들어 RT가 들어온다면 RT를 쪼개서 R 과 T가 나오게끔 하였다. 해당하는 choices[i]가 4보다 클 경우 뒤에부분 RT를 예를 들면 T에 동의를 하는 것이므로 T의 점수를 올려준다. 점수는 해당 객체를 바로 찾아서 choices[i] -4 를 해주면 점수가 들어가진다. 반대편도 마찬가지로 구해주면 된다.
마지막으로 각각의 파트에 맞게 끔 점수를 비교하여서 answer에 큰것을 넣어주면 된다. 둘다 점수가 같을 경우 앞에 있는 알파벳을 넣어준다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] LEVEL 1 : 둘만의 암호 (0) | 2024.07.03 |
---|---|
[프로그래머스/JS] LEVEL1 햄버거 만들기 (0) | 2024.07.03 |
[프로그래머스/JS] 체육복 (0) | 2024.06.28 |
[프로그래머스/JS] 숫자 짝꿍 (0) | 2024.06.27 |
[프로그래머스/JS] 로또의 최고순위와 최저순위 (0) | 2024.06.25 |