코딩테스트

[코딩테스트(Java)] 프로그래머스 118666 성격 유형 검사하기

inhooo00 2025. 3. 16. 18:49

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

public String solution(String[] survey, int[] choices) {
    String answer = "";
    Integer[][] arr = {{0, 0}, {1, 3}, {2, 2}, {3, 1}, {4, 0}, {5, 1}, {6, 2}, {7, 3}};
    LinkedHashMap<Character, Integer> answers = new LinkedHashMap();
    answers.put('R', 0);
    answers.put('T', 0);
    answers.put('C', 0);
    answers.put('F', 0);
    answers.put('J', 0);
    answers.put('M', 0);
    answers.put('A', 0);
    answers.put('N', 0);

    for (int i = 0; i < survey.length; i++) {
        if (choices[i] < 4) {
            answers.put(survey[i].charAt(0), answers.getOrDefault(survey[i].charAt(0), 0) + arr[choices[i]][1]);
        } else if (choices[i] > 4) {
            answers.put(survey[i].charAt(1), answers.getOrDefault(survey[i].charAt(1), 0) + arr[choices[i]][1]);
        }
    }

    StringBuilder result = new StringBuilder();

    // 1번 지표 (R, T)
    result.append(answers.get('R') >= answers.get('T') ? 'R' : 'T');
    // 2번 지표 (C, F)
    result.append(answers.get('C') >= answers.get('F') ? 'C' : 'F');
    // 3번 지표 (J, M)
    result.append(answers.get('J') >= answers.get('M') ? 'J' : 'M');
    // 4번 지표 (A, N)
    result.append(answers.get('A') >= answers.get('N') ? 'A' : 'N');
    System.out.println(answers);
    return result.toString();
}

 

 

 

📍포인트

1. 누적 값을 처리할 때 hashmap으로 처리.
2. value가 같을 때 key의 사전순 비교를 어떻게 할지 고민 필요.