[프로그래머스 lev1/JS] 성격 유형 검사하기

woolee의 기록보관소·2022년 11월 8일
0

알고리즘 문제풀이

목록 보기
72/178

문제 출처

프로그래머스 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("");
}
profile
https://medium.com/@wooleejaan

0개의 댓글