091
[JAVA]성격 유형 검사하기 본문
728x90
🔍자바 : 2022 KAKAO TECH INTERNSHIP . 카드뭉치
01. 코드 기획 단계
- 총 4가지의 성격 유형 지표를 나타내는 설문 배열이 들어올 것이기 때문에 "AN","NA" 등 한 지표에 대해 다양한 설문이 있을 경우 값을 쌓아 비교해야하기 때문에 map을 통해 각 유형에 점수를 넣고 마지막에 비교해주었습니다.
02. 코드 실행 및 오류 잡기
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
Map<Character, Integer> map = new HashMap<>();
map.put('R',0);
map.put('T',0);
map.put('C',0);
map.put('F',0);
map.put('M',0);
map.put('J',0);
map.put('A',0);
map.put('N',0);
for(int i = 0; i < choices.length; i++){
if(survey[i].equals("RT") || survey[i].equals("TR")){
choiceP(map,survey[i],choices[i]);
} else if(survey[i].equals("CF") || survey[i].equals("FC")){
choiceP(map,survey[i],choices[i]);
} else if(survey[i].equals("MJ") || survey[i].equals("JM")){
choiceP(map,survey[i],choices[i]);
} else if(survey[i].equals("AN") || survey[i].equals("NA")){
choiceP(map,survey[i],choices[i]);
}
}
answer = ""+compare(map, "RT")+compare(map, "CF")+compare(map, "JM")+compare(map, "AN");
return answer;
}
public void choiceP(Map<Character, Integer> m, String s, int c){
if(c <= 3){
m.put(s.charAt(0),m.get(s.charAt(0))+4-c);
} else if(c >= 5){
m.put(s.charAt(1),m.get(s.charAt(1))+c-4);
}
}
public char compare(Map<Character, Integer> m, String s){
int result = m.get(s.charAt(0)).compareTo(m.get(s.charAt(1)));
if(result > 0){
return s.charAt(0);
} else if(result < 0){
return s.charAt(1);
} else{
return (char)Math.min((int)s.charAt(0),(int)s.charAt(1));
}
}
}
03. 정리
- 함수에 Map을 넣어 사용할 경우에는 파라미터를 위처럼 적어줘야하면, 값이 직접 변경됩니다.
- compareTo는 박싱된 클래스,객체 타입끼리의 비교를 할 때 자주 사용됩니다. int값이며 0보다 크면 현재 객체가 비교대상보다 크고, 0보다 작으면 작고, 0이면 같은 것입니다.
- 사전식으로 된다는 것을 아스키 코드를 이용하여 나타내주었습니다.
728x90
'Coding Test > Programmers(프로그래머스)' 카테고리의 다른 글
[JAVA] 가장 가까운 글자 (0) | 2025.07.26 |
---|---|
[JAVA] 안전지대 (0) | 2025.07.25 |
[JAVA] 카드 뭉치 (0) | 2025.07.06 |
[JAVA] 명예의 전당(1) (0) | 2025.07.02 |
[JAVA] 옹알이(1) (0) | 2025.07.02 |