문제 출처
프로그래머스 lev1 - 성격 유형 검사하기
나의 풀이
function solution(survey, choices) {
const char = [
{R : 1, T : 1},
{C : 1, F : 1},
{J : 1, M : 1},
{A : 1, N : 1},
];
let pts = [0, 3, 2, 1, 0, 1, 2, 3];
for (let i=0; i<choices.length; i++) {
if (choices[i] > 4) {
for (let j=0; j<char.length; j++) {
if (char[j][survey[i][1]]) {
char[j][survey[i][1]] += pts[choices[i]];
}
}
}
else if (choices[i] < 4) {
for (let j=0; j<char.length; j++) {
if (char[j][survey[i][0]]) {
char[j][survey[i][0]] += pts[choices[i]];
}
}
}
}
let answer = '';
for (let i=0; i<char.length; i++) {
if (Object.values(char[i])[0] < Object.values(char[i])[1]) {
answer += Object.keys(char[i])[1];
}
else { answer += Object.keys(char[i])[0]; }
}
return answer;
}
console.log(solution(["AN", "CF", "MJ", "RT", "NA"], [5, 3, 2, 7, 5]));
다른 풀이
function solution(survey, choices) {
const MBTI = {};
const types = ["RT","CF","JM","AN"];
types.forEach((type) =>
type.split('').forEach((char) => MBTI[char] = 0)
)
choices.forEach((choice, index) => {
const [disagree, agree] = survey[index];
MBTI[choice > 4 ? agree : disagree] += Math.abs(choice - 4);
});
return types.map(([a, b]) => MBTI[b] > MBTI[a] ? b : a).join("");
}