본문 바로가기
알고리즘/PROGRAMMERS

성격 유형 검사하기(Lv.1)

by 현대타운301 2024. 3. 21.

 


 

문제 설명

 

 

 

입출력 예시

 

 

요약

4가지 질문 유형에 따른 점수를 계산해서 성격유형 return

 


 

풀이

 

문제 해석

알파벳 순서와 점수에 따라 나눠서 계산하기

 

 

접근 방식

1. 질문 유형을 2개로 나누기

  → [ RT, CF, MJ, AN ] -> [ R, T, C, F, M, J, A, N ]

 

2. 점수에 따라 각 알파벳에 해당하는 값 증가

  → RT 7의 경우: T + 3

 

3. 알파벳 순서 고려

  → 만약 R과 T의 점수가 같은 경우 R 선택

 


 

코드리뷰

 

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        HashMap<String, Integer> map = new HashMap<>();
        String[] arr = {"R", "T", "C", "F", "M", "J", "A", "N"};	// 각 질문 항목을 개별로 나누기
        for(String str : arr) {
            map.put(str, 0);	// 0으로 초기화
        }
        for(int i = 0; i < choices.length; i++) {
            int score = choices[i];
            String str1 = String.valueOf(survey[i].charAt(0));
            String str2 = String.valueOf(survey[i].charAt(1));
            if(score > 4) {	// 5, 6, 7점에 대한 처리(뒤에 해당하는 문자의 value를 각각 +1, +2, +3)
                map.put(str2, map.getOrDefault(str2, 0) + choices[i]-4);
            } else if(score == 1) {	// 1점이라면 '매우 비동의'에 해당하므로 앞에 문자에 해당하는 value + 3
                map.put(str1, map.getOrDefault(str1, 0) + 3);
            } else if(score == 2) {	// 2점은 앞에 문자 value +2
                map.put(str1, map.getOrDefault(str1, 0) + 2);
            } else if(score == 3) {	// 3점은 앞에 문자 value +1
                map.put(str1, map.getOrDefault(str1, 0) + 1);
            }
        }
        System.out.println(map);
        String answer = "";
        if(map.get("R") >= map.get("T")) {	// R점수와 T점수를 비교(같으면 알파벳 순으로 리턴)
            answer += "R";
        } else {
            answer += "T";
        }
        if(map.get("C") >= map.get("F")) {	// C점수와 F점수를 비교(같으면 알파벳 순으로 리턴)
            answer += "C";
        } else {
            answer += "F";
        }
        if(map.get("J") >= map.get("M")) {	// J점수와 M점수를 비교(같으면 알파벳 순으로 리턴)
            answer += "J";
        } else {
            answer += "M";
        }
        if(map.get("A") >= map.get("N")) {	// A점수와 N점수를 비교(같으면 알파벳 순으로 리턴)
            answer += "A";
        } else {
            answer += "N";
        }
        return answer;
    }
}

 

 

 

'알고리즘 > PROGRAMMERS' 카테고리의 다른 글

크레인 인형뽑기 게임(Lv.1)  (0) 2024.03.21
키패드 누르기(Lv.1)  (0) 2024.03.21
신규 아이디 추천(Lv.1)  (0) 2024.03.21
메뉴 리뉴얼(Lv.2)  (2) 2024.03.19
개인정보 수집 유효기간(Lv.1)  (1) 2024.03.19