티스토리 뷰
성격 유형 검사하기 [https://school.programmers.co.kr/learn/courses/30/lessons/118666]
정답 코드
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
String[] type = { "RT", "CF", "JM", "AN" };
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < survey.length; i++) {
int choice = choices[i] - 4; // -3 ~ 3의 점수로 바꿔줌
if(survey[i].charAt(0) > survey[i].charAt(1)) { //알파벳 순서가 뒤집혀있는 경우
survey[i] = survey[i].charAt(1) + "" + survey[i].charAt(0); //알파벳 순서 올바르게
choice *= -1; // 알파벳 순서를 바꿨으므로 점수 * -1을 하여 같이 바꿔줌
}
map.put(survey[i], map.getOrDefault(survey[i], 0) + choice);
}
String answer = "";
for(int i = 0; i < type.length; i++) { //성격 유형별로 순회
int choice = map.getOrDefault(type[i], 0); //map에서 점수를 꺼냄
if(choice <= 0) { // 점수가 0점 이하라면 알파벳 순서 앞글자 유형
answer += type[i].charAt(0) + "";
} else { // 0점 초과면 뒷글자 유형
answer += type[i].charAt(1) + "";
}
}
return answer;
}
}
- 점수는 1~7점까지이다. 4점이 모르겠음이므로 점수 - 4를 하여 -3 ~ 3의 점수로 바꿔준다.
- 성격 유형을 알파벳순으로 바꿔준다. 만약 성격 유형의 알파벳 순서가 뒤집혀 있었더라면 점수 * -1을 하여 같이 바꿔준다.
- survey를 순회하면서 map에 해당 유형 점수를 추가해준다.
- 성격 유형별로 순회하면서 map에서 점수를 꺼낸다. 점수가 0점 이하라면 알파벳 순서 앞글자 유형이고 0점 초과면 뒷글자 유형이다.
'알고리즘 > Programmers' 카테고리의 다른 글
[Level2] 광물 캐기 (JAVA) (0) | 2023.04.22 |
---|---|
[Level2] 무인도 여행 (JAVA) (0) | 2023.04.20 |
[Level2] 과제 진행하기 (JAVA) (0) | 2023.04.19 |
[Level2] 두 원 사이의 정수 쌍 (JAVA) (0) | 2023.04.17 |
[Level1] 달리기 경주 문제 풀이 (JAVA) (0) | 2023.04.09 |
댓글