먼저 성격 유형 오브젝트를 만들어줍니다.
survey의 각 원소를 front, end로 나누어 준 뒤,
선택지가 5, 6, 7이면 성격유형[end]에 선택지 % 4를 한 점수를 더해주고,
1, 2, 3이면 성격유형[front]에 4 - (선택지 % 4)를 한 점수를 더해줍니다.
지표가 2개씩 붙어있기 때문에, 비어 있는 비교 배열에 성격유형과 점수가 담긴 배열을 2개까지 담고, 조건에 맞는 성격유형을 정답에 붙여주고 비교 배열을 초기화합니다.
function solution(survey, choices) {
let answer = '';
const character = {R:0,T:0,C:0,F:0,J:0,M:0,A:0,N:0,X:0};
survey.forEach((v,i)=>{
const [front, end] = Array.from(v);
if (choices[i]/4 >= 1) {
const num = choices[i]%4;
character[end] += num
} else if (choices[i]/4 < 1 && choices[i]%4 !== 0) {
const num = 4 - choices[i]%4;
character[front] += num
}
});
let compare = [];
for (let c in character) {
if (compare.length === 2) {
if (compare[0][1] < compare[1][1]) answer += compare[1][0];
else answer += compare[0][0];
compare.length = 0;
}
compare.push([c, character[c]]);
}
return answer;
}