성격 유형 검사하기

Seongjin Jo·2023년 2월 20일
0

프로그래머스 LV1

목록 보기
16/31

문제

풀이

import java.util.*;
class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer="";
        Map<Character,Integer> map = new HashMap<>();
        // R T // C F // J M // A N
        for(int i=0; i<survey.length; i++){
            int value = choices[i];
            if(value<=3) {
                char ch = survey[i].charAt(0);
                map.put(ch,map.getOrDefault(ch,0)+4-value);
            }
            else if(value>=4){
                char ch = survey[i].charAt(1);
                map.put(ch,map.getOrDefault(ch,0)+value-4);
            }    
        }
        
        StringBuilder sb = new StringBuilder();
        sb.append(map.getOrDefault('R',0) >= map.getOrDefault('T',0) ? 'R' : 'T');
        sb.append(map.getOrDefault('C',0) >= map.getOrDefault('F',0) ? 'C' : 'F');
        sb.append(map.getOrDefault('J',0) >= map.getOrDefault('M',0) ? 'J' : 'M');
        sb.append(map.getOrDefault('A',0) >= map.getOrDefault('N',0) ? 'A' : 'N');
        
        answer = sb.toString();
        return answer;
    }
}

일단 이 문제를 이해하는데 5분정도 걸렸다 ㅎ,,
그리고 각각의 설문에 대한 선택의 점수가 어딘가에 저장을 하고 그 점수를 비교해서 성격유형을 판별 해야한다. 그렇기 때문에 HashMap을 이용해서 문제를 해결하는게 좋다.
각각 설문에 대한 점수를 map에 저장하고 삼항연산자로 더 큰 점수를 가진 유형을 깔끔하게 StringBuilder에 담고 toString()으로 answer에 담는다!

0개의 댓글