[프로그래머스] 성격 유형 검사하기 java

Elmo·2022년 8월 18일
0

🔔 성격 유형 검사하기

😊 문제 링크

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

HashMap 사용시 Integer value값은 증위연산자 등을 이용하여 증가시킬 수 없음. 따로 score 배열을 정의하여 사용함

Switch문 사용시 괄호와 break문 까먹지 말것!

사전순일 경우 작은 값이 먼저인 것을 주의하자

🔑 java 풀이

import java.util.*;
class Solution {
    public String solution(String[] survey, int[] choices) {
        char[] type = {'R','T','C','F','J','M','A','N'};
        //타입별로 번호 매기기
        HashMap<Character,Integer> index = new HashMap<>();
        int score[] = new int[8];
        //배열 index 순서대로 초기화
        for(int i=0; i<8; i++)
            index.put(type[i],i);
            
        for(int i=0; i<survey.length; i++){
        //String 값을 char 배열로 전환
        //char[0]은 앞의 알파벳, char[1]은 뒤의 알파벳            		   char[] arr=survey[i].toCharArray();
            switch (choices[i]){
                case 1 : score[index.get(arr[0])]+=3;
                         break;
                case 2 : score[index.get(arr[0])]+=2;
                         break;
                case 3 : score[index.get(arr[0])]+=1;
                         break;
                case 4 : break;
                case 5 : score[index.get(arr[1])]+=1;
                         break;
                case 6 : score[index.get(arr[1])]+=2;
                         break;
                case 7 : score[index.get(arr[1])]+=3;
                         break;
                default : break;
            }      
        }
        String answer = "";
        for(int i=0; i<8; i+=2){
            if(score[i]>score[i+1])
                answer+=type[i];
            else if(score[i]==score[i+1]){
                if(type[i]<type[i+1])
                    answer+=type[i];
                else
                    answer+=type[i+1];
            }
            else
                answer+=type[i+1];
        }
        return answer;
    }
}

profile
엘모는 즐거워

0개의 댓글