레벨: 1
언어: Java
문제:
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.
지표 번호 | 성격 유형 |
---|---|
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.
선택지 |
---|
매우 비동의 |
비동의 |
약간 비동의 |
모르겠음 |
약간 동의 |
동의 |
매우 동의 |
각 질문은 1가지 지표로 성격 유형 점수를 판단합니다.
제한사항:
1 ≤ survey의 길이 ( = n) ≤ 1,000
survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
choices의 길이 = survey의 길이
choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.
1 ≤ choices의 원소 ≤ 7
Map을 사용해서 각지표별 점수를 구하고, 해시를 이용하면 빠른조회가 가능하니까 HashMap 사용
작성당시 최근에 올라온 문제였다.
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
Map<Character, Integer> map = new HashMap<>();
for(int i = 0; i< survey.length; i++) {
int value = choices[i];
if(value > 0 && value < 4) {
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);
}
}
return new StringBuilder()
.append(map.getOrDefault('R', 0) >= map.getOrDefault('T', 0) ? 'R' : 'T')
.append(map.getOrDefault('C', 0) >= map.getOrDefault('F', 0) ? 'C' : 'F')
.append(map.getOrDefault('J', 0) >= map.getOrDefault('M', 0) ? 'J' : 'M')
.append(map.getOrDefault('A', 0) >= map.getOrDefault('N', 0) ? 'A' : 'N')
.toString();
}
}