티스토리 뷰

성격 유형 검사하기 [https://school.programmers.co.kr/learn/courses/30/lessons/118666]

정답 코드

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String[] type = { "RT", "CF", "JM", "AN" };
        Map<String, Integer> map = new HashMap<>();
        for(int i = 0; i < survey.length; i++) {
            int choice = choices[i] - 4; // -3 ~ 3의 점수로 바꿔줌
            if(survey[i].charAt(0) > survey[i].charAt(1)) { //알파벳 순서가 뒤집혀있는 경우
                survey[i] = survey[i].charAt(1) + "" + survey[i].charAt(0); //알파벳 순서 올바르게
                choice *= -1; // 알파벳 순서를 바꿨으므로 점수 * -1을 하여 같이 바꿔줌
            }
            map.put(survey[i], map.getOrDefault(survey[i], 0) + choice);
        }

        String answer = "";
        for(int i = 0; i < type.length; i++) { //성격 유형별로 순회
            int choice = map.getOrDefault(type[i], 0); //map에서 점수를 꺼냄
            if(choice <= 0) { // 점수가 0점 이하라면 알파벳 순서 앞글자 유형
                answer += type[i].charAt(0) + "";
            } else { // 0점 초과면 뒷글자 유형
                answer += type[i].charAt(1) + "";
            }
        }
        return answer;
    }
}
  1. 점수는 1~7점까지이다. 4점이 모르겠음이므로 점수 - 4를 하여 -3 ~ 3의 점수로 바꿔준다.
  2. 성격 유형을 알파벳순으로 바꿔준다. 만약 성격 유형의 알파벳 순서가 뒤집혀 있었더라면 점수 * -1을 하여 같이 바꿔준다.
  3. survey를 순회하면서 map에 해당 유형 점수를 추가해준다.
  4. 성격 유형별로 순회하면서 map에서 점수를 꺼낸다. 점수가 0점 이하라면 알파벳 순서 앞글자 유형이고 0점 초과면 뒷글자 유형이다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함