알고리즘/프로그래머스

[Programmers] Lv.1 성격 유형 검사하기 _JavaScript

3o14 2023. 5. 23. 17:25
728x90
반응형

 

프로그래머스 Lv1. 성격 유형 검사하기 [자바스크립트]

 

🧶 문제 설명

나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.

지표 번호 성격 유형
1 지표 라이언형(R), 튜브형(T)
2 지표 콘형(C), 프로도형(F)
3 지표 제이지형(J), 무지형(M)
4 지표 어피치형(A), 네오형(N)

4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다.

검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.

 

각 질문은 아래 표처럼 점수를 매길 수 있습니다.

선택지 성격 유형 점수
매우 비동의 네오형 3
비동의 네오형 2
약간 비동의 네오형 1
모르겠음 어떤 성격 유형도 점수를 얻지 않습니다
약간 동의 어피치형 1
동의 어피치형 2
매우 동의 어피치형 3

 

 

제한사항

  • 1 ≤ survey의 길이 ( = n) ≤ 1,000
  • choices의 길이 = survey의 길이
choices
1 매우 비동의
2 비동의
3 약간 비동의
4 모르겠음
5 약간 동의
6 동의
7 매우 동의

 

입출력 예

survey choices result
["AN", "CF", "MJ", "RT", "NA"] [5, 3, 2, 7, 5] "TCMA"
["TR", "RT", "TR"] [7, 1, 3] "RCJA"

 

 

🧶 풀이법

1. 객체에 각 지표를 key값으로, 점수를 value로 세팅합니다.

2. 각 객체를 돌면서 -4를 해준 값을 해당 key값의 value에 더해줍니다.

   예를 들어, choices가 1점일 경우 -4를 하면 -3이 되므로 해당 key의 value에 -3을 더하게 됩니다.

3. 지표가 올바른 순서일 경우와 아닌 경우를 나누어 수행합니다. (한 지표에서도 "AN"과 "NA" 모두 생각해야 하기 때문)

4. 다시 객체를 순회하며 값이 0보다 클 경우 오른쪽 지표를, 0보다 작거나 같을 경우 왼쪽 지표를 answer 변수에 대입합니다.

 

 

🧶 코드

function solution(survey, choices) {
    let answer = "";
    
    // 1. 객체에 각 지표를 key값으로, 점수를 value로 세팅합니다.
    let mbti = {
        "RT": 0,
        "CF": 0,
        "JM": 0,
        "AN": 0,
    }
    
    // 2. 각 객체를 돌면서 -4를 해준 값을 해당 key값의 value에 더해줍니다.
    for(let i = 0; i < survey.length; i++){  
        
        // 3. 지표가 올바른 순서일 경우와 아닌 경우를 나누어 수행합니다.
        if(survey[i] in mbti){
            mbti[survey[i]] += choices[i] - 4;
        }else {
            survey[i] = survey[i].split("").reverse().join("");
            mbti[survey[i]] += -(choices[i] - 4);
        }
    }
    
    // 4. 다시 객체를 순회하며 값이 0보다 클 경우 오른쪽 지표를,
    //     0보다 작거나 같을 경우 왼쪽 지표를 answer 변수에 대입합니다.
    for(e in mbti){
        e.split("");
        if (mbti[e] > 0) answer += e[1];
        else answer += e[0]
    }
    
    return answer;
}

 

 

🧶 후기

엠비티아이 문제다 👀👀 

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

LIST