https://school.programmers.co.kr/learn/courses/30/lessons/118666
이 문제는 Map을 활용해서 구현하면 된다.
각 성격을 Map의 key로
각 성격의 대한 설문조사 결과를 Map의 value로 누적한다.
마지막에 성격유형에 따라 value값이 큰 성격 유형이 선택된다.
단, 같은 경우 알파벳이 더 앞선 순서가 성격 유형으로 선택된다.
맞았지만 다른 사람의 풀이와 비교해본 결과
불필요한 코드가 많아서
내 코드와 다른 사람의 코드를 비교해서 올린다.
result_sc.put('R',0);
result_sc.put('T',0);
result_sc.put('C',0);
result_sc.put('F',0);
result_sc.put('J',0);
result_sc.put('M',0);
result_sc.put('A',0);
result_sc.put('N',0);
static int[] score={0,3,2,1,0,1,2,3};
static void makeServResult(String mb, int check){
if(check<=3)
result_sc.put(mb.charAt(0),result_sc.get(mb.charAt(0))+score[check]);
else
result_sc.put(mb.charAt(1),result_sc.get(mb.charAt(1))+score[check]);
}
static void makeMbti(){
for(int i=0;i<4;i++){
if(result_sc.get(search[i][0])<result_sc.get(search[i][1])){
sb.append(search[i][1]+"");
}else if(result_sc.get(search[i][0])>result_sc.get(search[i][1])){
sb.append(search[i][0]);
}else{
int a = (int)(search[i][0]);
int b = (int)(search[i][1]);
if(a>b) sb.append(search[i][1]);
else sb.append(search[i][0]);
}
}//for
}
import java.util.*;
import java.io.*;
class Solution {
static int[] score={0,3,2,1,0,1,2,3};
static Map<Character,Integer> result_sc = new HashMap<>();;
static StringBuilder sb = new StringBuilder();
static char[][] search ={{'R','T'},{'C','F'},{'J','M'},{'A','N'}};
public StringBuilder solution(String[] survey, int[] choices) {
String answer = "";
result_sc.put('R',0);
result_sc.put('T',0);
result_sc.put('C',0);
result_sc.put('F',0);
result_sc.put('J',0);
result_sc.put('M',0);
result_sc.put('A',0);
result_sc.put('N',0);
for(int i=0;i<survey.length;i++){
makeServResult(survey[i],choices[i]);
}
makeMbti();
return sb;
}
static void makeServResult(String mb, int check){
if(check<=3)
result_sc.put(mb.charAt(0),result_sc.get(mb.charAt(0))+score[check]);
else
result_sc.put(mb.charAt(1),result_sc.get(mb.charAt(1))+score[check]);
}
static void makeMbti(){
for(int i=0;i<4;i++){
if(result_sc.get(search[i][0])<result_sc.get(search[i][1])){
sb.append(search[i][1]+"");
}else if(result_sc.get(search[i][0])>result_sc.get(search[i][1])){
sb.append(search[i][0]);
}else{
int a = (int)(search[i][0]);
int b = (int)(search[i][1]);
if(a>b) sb.append(search[i][1]);
else sb.append(search[i][0]);
}
}
}
}
static void makeMbti(){
sb.append(result_sc.get('R')>=result_sc.get('T')?'R':'T');
sb.append(result_sc.get('C')>=result_sc.get('F')?'C':'F');
sb.append(result_sc.get('J')>=result_sc.get('M')?'J':'M');
sb.append(result_sc.get('A')>=result_sc.get('N')?'A':'N');
}