[프로그래머스] 성격 유형 검사 - 자바
나의 풀이
import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
HashMap<Character, Integer> map = new HashMap<>();
char[] array = {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
for (char c : array) {
map.put(c, 0);
}
for (int i = 0; i < survey.length; i++) {
char[] questionArray = survey[i].toCharArray();
if (choices[i] < 4) {
map.put(questionArray[0], map.get(questionArray[0]) + Math.abs(4 - choices[i]));
} else {
map.put(questionArray[1], map.get(questionArray[1]) + Math.abs(4 - choices[i]));
}
}
String[] array1 = {"RT", "CF", "JM", "AN"};
for (String str : array1) {
char[] charArray = str.toCharArray();
if (map.get(charArray[0]) < map.get(charArray[1])) {
answer += charArray[1];
} else {
answer += charArray[0] ;
}
}
return answer;
}
}
접근
- Map을 사용하여 각 유형 별 점수 저장
- 미리 array1에 유형을 사전순으로 정렬하여 점수비교만 하면되게함
배운 점
- String에 + 연산으로 문자를 뒤에 이을 수 있는것을 알았다.