알고리즘/프로그래머스

[프로그래머스]JAVA - Level1. 성격 유형 검사하기

K.두부 2022. 8. 27. 00:24
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

선택지에 따라 8가지의 mbti에 점수를 입력해야하므로 HashMap 을 쓰면 간단하게 풀 수 있다.

HashMap 의 key 값에 8가지의 mbti 유형을 넣어주고 value 값을 모두 0으로 선언한다.

choice 길이 만큼 반복문을 태워서 switch 문을 이용해서 점수를 입력해주었다. 

이후에 서로 상이한 mbti 끼리 점수를 비교해서 큰 값을 answer 변수에 차례대로 입력하면 된다.

import java.util.HashMap;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        char[] mbti = {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
        
        HashMap<Character, Integer> hm = new HashMap<>();
        
        // HashMap에 mbti 8가지 입력
        for (int i=0; i<mbti.length; i++) {
            hm.put(mbti[i], 0);
        }
        
        // 선택지에 따라 해당 mbti에 점수 입력
        for (int i=0; i<choices.length; i++) {
            switch (choices[i]) {
                case 1:
                    hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 3);
                    break;
                case 2:
                    hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 2);
                    break;
                case 3:
                    hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 1);
                    break;
                case 4:
                    break;
                case 5:
                    hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 1);
                    break;
                case 6:
                    hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 2);
                    break;
                case 7:
                    hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 3);
                    break;
            }
        }
        
        for (int i=0; i<mbti.length; i+=2) {
            if (hm.get(mbti[i]) >= hm.get(mbti[i+1])) {
                answer += mbti[i];
            } else {
                answer += mbti[i+1];
            }
        }
        
        return answer;
    }
}

 

 

 

 

 

반응형