성격 유형 검사하기

hyeongjun Jo·2022년 11월 26일
0

Programmers

목록 보기
4/7

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

문제

풀이

Map을 이용해서 각 성격유형의 점수를 저장하고
R, T
C, F
J, M
A, N
점수를 비교해서 출력

코드

전체코드


import java.util.HashMap;

class Solution {
    static HashMap<String, Integer> map = new HashMap<>();

    public String solution(String[] survey, int[] choices) {
        String answer = "";

        for (int i = 0; i < survey.length; i++) {
            givePoint(survey[i], choices[i]);
        }

        answer = getAnswer();
        return answer;
    }

    private String getAnswer() {
        StringBuilder sb = new StringBuilder();

        if (map.getOrDefault("R", 0) >= map.getOrDefault("T", 0)) {
            sb.append("R");
        } else sb.append("T");
        if (map.getOrDefault("C", 0) >= map.getOrDefault("F", 0)) {
            sb.append("C");
        } else sb.append("F");
        if (map.getOrDefault("J", 0) >= map.getOrDefault("M", 0)) {
            sb.append("J");
        } else sb.append("M");
        if (map.getOrDefault("A", 0) >= map.getOrDefault("N", 0)) {
            sb.append("A");
        } else sb.append("N");

        return sb.toString();
    }

    private void givePoint(String s, int choice) {
        if(choice == 4) return;
        if (choice < 4) {
            map.put(s.substring(0, 1), map.getOrDefault(s.substring(0,1), 0) + 4 - choice);
        } else {
            map.put(s.substring(1, 2), map.getOrDefault(s.substring(1,2), 0) + choice - 4);
        }
    }
}
profile
DevOps Engineer

0개의 댓글