본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[pro] 프로그래머스 level1 118666 성격 유형 검사 (Java)

[문제]

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

 

프로그래머스

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

programmers.co.kr

 

[풀이]

단순 구현. Map에 유형과 점수를 key, value로 저장하도록 했다.

 

[코드]

 

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        String[][] indicators = {
            {"R", "T"},
            {"C", "F"},
            {"J", "M"},
            {"A", "N"}
        };
        
        int[] score = {3, 2, 1, 0, 1, 2, 3};
        Map<String, Integer> map = new HashMap<>();
        //검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 
        
        //점수 계산
        for(int i=0; i<survey.length; i++){
            String s = survey[i];
            if(choices[i] < 4){
                String temp = String.valueOf(s.charAt(0));
                map.put(temp, map.getOrDefault(temp, 0)+score[choices[i]-1]);
            }
            else if(choices[i] > 4){ //동의
                String temp = String.valueOf(s.charAt(1));
                map.put(temp, map.getOrDefault(temp, 0)+score[choices[i]-1]);
            }
        }
    
        //성격유형 검사
        for(int i=0; i<4; i++){
            if(map.getOrDefault(indicators[i][0], 0) >= map.getOrDefault(indicators[i][1], 0)){
                answer += indicators[i][0];
            }
            else answer += indicators[i][1];
        }
        
        return answer;
    }
}