본문 바로가기
Coding Test/JavaScript

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

by giem 2022. 8. 19.
반응형

 

이전 포스트의 파이썬, C++, Go 코드에 이어

프로그래머스 성격 유형 검사하기를 JS로 풀어보겠다.

2022년 카카오 인턴 코딩 테스트 출제 문제로

아직 프로그래머스에선 푼 사람이 많지 않다.


문제

레벨 1치고 문제가 좀 길다. 하지만 간단하다.

 

survey에 성격 유형 지표들이 들어있고

choices에 따라 survey의 유형에 값을 더해주고

4개의 분류에서 각각 값이 높은 지표를 리턴하면 된다.


구현

object를 먼저 초기화해준다.

 

survey와 choices의 개수가 같기 때문에

이 사이즈만큼 반복을 하고

object에 survey의 지표 중에 choices에 따라 선택하여 값을 더해준다.

그 후 object의 값을 비교하여 성격 유형 값에 추가해주고

성격유형을 리턴한다.

 

문제만 길지 간단한 문제라고 생각한다.


코드
function solution(survey, choices) {
    let answer = '';
    const score = [0,3,2,1,0,1,2,3];
    let survelm = new Object();
    ['R','T', 'C','F', 'J','M', 'A','N'].forEach(item => survelm[item]=0);

    for (let i=0; i<survey.length; i++) {
        survelm[survey[i][parseInt(choices[i]/4)]] += score[choices[i]];
    }
    answer += survelm['R'] >= survelm['T'] ? 'R' : 'T';
    answer += survelm['C'] >= survelm['F'] ? 'C' : 'F';
    answer += survelm['J'] >= survelm['M'] ? 'J' : 'M';
    answer += survelm['A'] >= survelm['N'] ? 'A' : 'N';
    return answer;
}

 

약간의 트릭은 choices[i] /4 부분인데

index 4까지는 앞의 값, 그 이후는 뒤의 값을 보도록 한 것이다.

형 변환을 위해 parseInt로 처리해주었다.

 

나머지는 쉽게 이해할 수 있다.


다른 풀이

아직 신상문제라 그런지 좋은 코드가 보이지 않는다.

 

혹시 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다.

반응형

댓글