[프로그래머스] Lv.1 성격 유형 검사하기

Miro·2022년 8월 20일
0
post-thumbnail

프로그래머스 Lv.1 성격 유형 검사하기

문제



제한사항

입출력

나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function solution(survey, choices) {
    let answer = '';
    let mbti = {
        R: 0, T: 0,
        C: 0, F: 0,
        J: 0, M: 0,
        A: 0, N: 0,    
    }
    
    for(let i = 0; i < survey.length; i++) {
        if(choices[i] >= 1 && choices[i] <= 3) {
            mbti[survey[i][0]] += 4-choices[i];
        } else if(choices[i] >= 5 && choices[i] <= 7) {
            mbti[survey[i][1]] += choices[i]-4;
        } else continue;
    }
    
    if(mbti.R >= mbti.T) answer += 'R';
    else answer += 'T';
    
    if(mbti.C >= mbti.F) answer += 'C';
    else answer += 'F';
    
    if(mbti.J >= mbti.M) answer += 'J';
    else answer += 'M';
    
    if(mbti.A >= mbti.N) answer += 'A';
    else answer += 'N';
    
    return answer;
}
cs

객체 mbti에 각각의 성격 유형을 키값으로, 값은 0으로 할당한다.

반복문을 i가 0부터 survey의 길이까지 반복한다.

만약 choices[i]가 1, 2, 3이라면 mbti[survey[i][0]]는 각각 4에서 choices[i]를 뺀 값을 점수로 얻을 수 있다. (차례대로 3, 2, 1점)
또, choices[i]가 5, 6, 7이라면 mbti[survey[i][1]]은 각각 choices[i]에서 -4 한 값을 점수로 얻을 수 있다. (차례대로 1, 2, 3점)
그 외의 경우는 continue를 사용하여 넘겨준다. (choices[i]가 4일때)

객체 mbti에 선택지별 점수가 다 채워지면 RT, CF, JM, AN을 각각 if-else문을 사용하여 앞쪽 성격유형의 숫자가 더 크거나 같으면 answer에 앞쪽 성격유형의 알파벳을 추가한다.
그렇지 않다면 뒷쪽 성격유형의 알파벳을 추가한다.
-> 숫자가 같은 경우에는 사전을 기준으로 먼저인 알파벳을 성격유형으로 선택한다.

profile
프론트엔드 개발자(진)

0개의 댓글