https://school.programmers.co.kr/learn/courses/30/lessons/118666
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
String[] type = {"RT", "CF", "JM", "AN"};
Map<String, Integer> typeMap = new HashMap<>();
StringBuilder sb = new StringBuilder();
for(int i=0; i<type.length; i++){
typeMap.put(type[i],0);
}
for (int i = 0; i < survey.length; i++) {
sb.append(survey[i]);
if (typeMap.containsKey(sb.toString())) {
typeMap.replace(sb.toString(), typeMap.get(sb.toString()) + (choices[i]-4));
} else if (typeMap.containsKey(sb.reverse().toString())) {
typeMap.replace(sb.toString(), typeMap.get(sb.toString()) + (4-choices[i]));
}
sb.delete(0, 2);
}
for (int i = 0; i < typeMap.size(); i++) {
if(typeMap.get(type[i]) > 0){
sb.append(type[i].charAt(1));
} else {
sb.append(type[i].charAt(0));
}
}
answer = sb.toString();
return answer;
}
}
타입별로 묶어서 Map에 넣어주고 survey 배열을 돌면서 하나씩 Map의 키값과 대조하여 선택에 따른 점수를 밸류값에 더해준다. 배열에 저장된 타입과 반대로 나올 수 있으므로 그 경우에는 점수를 반대로 계산해 준다. 그 이후에 Map에 저장된 밸류값에 따라 결과를 리턴해준다.