[Programmers] 성격 유형 검사하기
2023. 8. 3. 14:01ㆍComputer Sciences/Problem Solve
https://school.programmers.co.kr/learn/courses/30/lessons/118666
문제 설명
간단한 구현 문제이다. 해결하는 방법에는 여러 방법이 있겠지만 필자는 HashMap으로 성격 유형 검사 결과를 관리했다. 고려해야할 부분은 성격 유형이 항상 일관되게 주어지지 않아 두 문자를 구별해야 하는 점이다. 이는 choice 값에서 4를 빼서 해결했다. choice - 4한 값이 0보다 크면 뒷 문자이고, 작으면 앞 문자라고 판단했다. 그 외에 특별히 어려운 점은 없다.
코드
import java.util.Map;
import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
Map<String, Integer> personalityType = new HashMap<>();
init(personalityType);
for (int i = 0; i < survey.length; i++) {
String[] types = survey[i].split("");
int choice = choices[i];
int result = choice - 4;
int selectedType = result < 0 ? 0 : 1;
personalityType.put(
types[selectedType],
personalityType.get(types[selectedType]) + Math.abs(result));
}
StringBuilder sb = new StringBuilder();
sb.append(personalityType.get("R") >= personalityType.get("T") ? "R" : "T");
sb.append(personalityType.get("C") >= personalityType.get("F") ? "C" : "F");
sb.append(personalityType.get("J") >= personalityType.get("M") ? "J" : "M");
sb.append(personalityType.get("A") >= personalityType.get("N") ? "A" : "N");
return sb.toString();
}
private void init(Map<String, Integer> map) {
map.put("R", 0);
map.put("T", 0);
map.put("C", 0);
map.put("F", 0);
map.put("J", 0);
map.put("M", 0);
map.put("A", 0);
map.put("N", 0);
}
}
'Computer Sciences > Problem Solve' 카테고리의 다른 글
[Programmers] 달리기 경주 (0) | 2023.08.04 |
---|---|
[Programmers] 테이블 해시 함수 (0) | 2023.08.03 |
[Programmers] 개인정보 수집 유효기간 (0) | 2023.08.02 |
[Programmers] 공원 산책 (0) | 2023.08.02 |
[Baekjoon] 2193번: 이친수 (0) | 2023.05.20 |