091

[JAVA]성격 유형 검사하기 본문

Coding Test/Programmers(프로그래머스)

[JAVA]성격 유형 검사하기

공구일 2025. 7. 8. 00:26
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