[프로그래머스] 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기 자바 코드

mango·2023년 3월 1일
0

* Things I learnt

1. HashMap의 개념과 사용 함수

2. 점수마다 각 MBTI 알파벳 별 (예: R과 T) 어떻게 점수를 계산할 것인가

1점: R 3점
2점: R 2점
3점: R 1점
4점: 0점
5점: T 1점 = R -1점
6점: T 2점 = R -2점
7점: T 3점 = R -3점
-> 앞 알파벳 점수계산만 할 것이었으므로 (4 - 점수) 에 * -1 해줌으로서 부호를 변환함

* 알고리즘

  1. MBTI에 사용되는 알파벳이 8가지 밖에 안되므로 char 배열 선언
  2. hashmap 선언 및 알파벳으로 초기화
  3. 모든 survey 값의 첫째 자리 알파벳에만 음수, 0, 양수의 값으로 계산함(예: RT 5점인 경우 R에만 -1점 더해주기)
  4. answer을 도출하기 위해 for 문 돌리며 각 MBTI 유형의 알파벳의 값(예: R과 T)을 비교하여 값이 큰 쪽의 알파벳을 가져옴

* 코드

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        int score = 0;
        char[] MBTI = {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
        HashMap <Character, Integer> hm = new HashMap  <Character, Integer>();
        
        for(int i = 0; i < 8; i++) {
            hm.put(MBTI[i], 0);
        }
        
        for(int i = 0; i < survey.length; i++){                
            score = hm.get(survey[i].charAt(0)) + (choices[i] - 4) * -1;
            hm.put(survey[i].charAt(0), score);
        }
        
        int j = 0;
        for(int i = 0; i < 4; i++) {
            j = i * 2;
            if (hm.get(MBTI[j]) >= hm.get(MBTI[j+1]))
                answer += MBTI[j];
            else
                answer += MBTI[j+1];
        }         
        
        return answer;
    }
}

한번만에 통과~

profile
앎의 즐거움을 아는 나는 mango ♪

0개의 댓글