알고리즘 문제 연습

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

codi-3 2024. 9. 30. 18:34

🔍문제

 


📊분석

  • 유형의 점수 가 동일할시 사전순으로 빠른 유형을 가져간다.
  • 1-3 까지는 비동의 유형에 5-7 까지는 동의유형에 점수를 추가한다.
  • 비동의 유형은 Survey원소의 첫번째 캐릭터이며, 동의 유형은 Survey원소의 두번쨰 캐릭터다.

✏️ 풀이

import java.util.*;
class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "RCJA";
        Map<String, Integer> score = new HashMap<>();
        score.put("R", 0);
        score.put("T", 0);
        score.put("C", 0);
        score.put("F", 0);
        score.put("J", 0);
        score.put("M", 0);
        score.put("A", 0);
        score.put("N", 0);
        
        for (int i = 0; i< survey.length; i++){
            if(choices[i]< 4){
                String key =Character.toString(survey[i].charAt(0));
                score.put(key, score.get(key) + (4-choices[i]));
            }
            if(choices[i]>4){
                String key =Character.toString(survey[i].charAt(1));
                score.put(key, score.get(key) + (choices[i]-4));
            }
        }
        
        
        // for (String keys : score.keySet())  {
        //     System.out.println(keys + ":"+ score.get(keys));
        // }
        
        if(score.get("T") > score.get("R")){
            answer = answer.replace("R","T");
        }
        if(score.get("F") > score.get("C")){
            answer = answer.replace("C","F");
        }
        if(score.get("M") > score.get("J")){
            answer = answer.replace("J","M");
        }
        if(score.get("N") > score.get("A")){
            answer = answer.replace("A","N");
        }
        return answer;
    }
}

 

  • answer을 동일한 점수일시 나오는 값으로 초기화 RCJA로 정해주었다
  • 맵을 사용하여 각 유형별 점수를 0 으로 초기화 하였다
  • for문을 돌며 점수가 1~3점 일시 비동의 유형의 점수, 5~7점 일시 동의 유형의 점수에 값을 추가해주었다.
  • 마지막으로 if문을 사용하여 값이 높은 유형을 초기화된 answer 값에 수정하였다.