import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
// 지표별 결과 HashMap
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// 선택지에 따른 지표별 결과 저장
for (int i = 0; i < survey.length; i++) {
int value = choices[i];
// 동의 선택지 선택
if (value > 4) {
char key = survey[i].charAt(1);
map.put(key, map.getOrDefault(key, 0) + value - 4);
}
// 비동의와 모르겠음 선택지 선택
else {
char key = survey[i].charAt(0);
map.put(key, map.getOrDefault(key, 0) + 4 - value);
}
}
// 결과 문자열 생성
// 둘 중 큰 값을 정해야하고, 같은 값일 경우 사전 순으로 빠른 알파벳이 결과가 되어야 함
StringBuilder sb = new StringBuilder();
sb.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');
answer = sb.toString();
return answer;
}
}
HashMap
을 사용해서 해결해야하는 문제survey[i]
의 두번째 문자 -> key
, 해당 key
의 값 -> value - 4
survey[i]
의 첫번째 문자 -> key
, 해당 key
의 값 -> 4 - value
value = choices[i]
RT, CF, JM, AN
의 값을 각각 비교한 뒤 조건에 맞게 결과 문자열 생성