프로그래머스 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
에 앞쪽 성격유형의 알파벳을 추가한다.
그렇지 않다면 뒷쪽 성격유형의 알파벳을 추가한다.
-> 숫자가 같은 경우에는 사전을 기준으로 먼저인 알파벳을 성격유형으로 선택한다.