[프로그래머스] 성격 유형 검사

AI·2025년 1월 6일
import java.util.HashMap;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        HashMap<Character, Integer> res = new HashMap<Character, Integer>();
        res.put('R',0); res.put('T',0); res.put('C',0); res.put('F',0);
        res.put('J',0); res.put('M',0); res.put('A',0); res.put('N',0);
        //choices 1~3은 survey의 첫번째, 5~7은 survey의 두번째
        for(int i=0;i<choices.length;i++){
            char first = survey[i].charAt(0);
            char second = survey[i].charAt(1);
            
            switch(choices[i]){
                case 1: res.replace(first, res.get(first)+3); break;
                case 2: res.replace(first, res.get(first)+2); break;
                case 3: res.replace(first, res.get(first)+1); break;
                case 5: res.replace(second, res.get(second)+1); break;
                case 6: res.replace(second, res.get(second)+2); break;
                case 7: res.replace(second, res.get(second)+3); break;
            }
        }
        // System.out.println("res : " +res);
        answer += (res.get('R')>=res.get('T')) ? 'R':'T';
        answer += (res.get('C')>=res.get('F')) ? 'C':'F';
        answer += (res.get('J')>=res.get('M')) ? 'J':'M';
        answer += (res.get('A')>=res.get('N')) ? 'A':'N';
        
        return answer;
    }
}

미리 종류와 점수를 저장해두고 그대로 저장시키게 해도 된다.

        char [][] type = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}};
        int [] score = {0, 3, 2, 1, 0, 1, 2, 3};

        HashMap<Character, Integer> point = new HashMap<Character, Integer>();

        // 점수 기록할 배열 초기화 
        for (char[] t : type) {
            point.put(t[0], 0);
            point.put(t[1], 0);
        }

        // 점수 기록 
        for (int idx = 0; idx < choices.length; idx++){
            if(choices[idx] > 4){
                point.put(survey[idx].charAt(1), point.get(survey[idx].charAt(1)) + score[choices[idx]]);
            } else {
                point.put(survey[idx].charAt(0), point.get(survey[idx].charAt(0)) + score[choices[idx]]);
            }
        }

        // 지표 별 점수 비교 후 유형 기입
        for (char[] t : type) {
            answer += (point.get(t[1]) <= point.get(t[0])) ? t[0] : t[1];
        }

0개의 댓글