[2022 KAKAO TECH INTERNSHIP] 성격 유형 검사하기

Wintering·2022년 8월 19일
0

Algorithm

목록 보기
10/16

1hours

  1. 성격 유형 검사 hashmap 만들기 ( 유형에 해당하는 알파벳과, 점수를 키쌍으로 묶기)
  2. 입력되는 값의 횟수만큼 반복문 돌리기
    • chocies 값에 따라 choices값이 4보다 크면 survey의 두번째 글자에 점수 추가
    • 4보다 작으면 survey의 첫번째 글자에 점수 추가
  3. 2가지 유형을 비교해서 더 큰 쪽의 값을 출력하기
import java.util.HashMap;

/**
 * 성격유형검사
 * survey : 질문마다 판단하는 지표를 담은 1차원 배열 ( 매개변수 )
 * choices : 검사자가 선택한 선택지를 담은 1차원 배열 ( 매개변수 )
 */
public class Solution {
    public static String solution(String[] survey, int[] choices) {
        HashMap<Character, Integer> mbti = new HashMap<Character, Integer>() {{
            put('R', 0);
            put('T', 0);
            put('C', 0);
            put('F', 0);
            put('J', 0);
            put('M', 0);
            put('A', 0);
            put('N', 0);
        }};

        int COUNT = survey.length;

        for (int i = 0; i < COUNT; i++) {
            char type1 = survey[i].charAt(0);
            char type2 = survey[i].charAt(1);

            if (choices[i] > 4) {
                mbti.put(type2, mbti.get(type2) + (choices[i] - 4));
            } else if (choices[i] < 4) {
                mbti.put(type1, mbti.get(type1) + (4 - choices[i]));
            }
        }

        String answer = makeAnswer(mbti);

        return answer;
    }

    public static String makeAnswer(HashMap<Character, Integer> mbti){
        StringBuilder sb = new StringBuilder();

        if(mbti.get('R') >= mbti.get('T')){
            sb.append('R');
        }else{
            sb.append('T');
        }

        if(mbti.get('C') >= mbti.get('F')){
            sb.append('C');
        }else{
            sb.append('F');
        }

        if(mbti.get('J') >= mbti.get('M')){
            sb.append('J');
        }else{
            sb.append('M');
        }

        if(mbti.get('A') >= mbti.get('N')){
            sb.append('A');
        }else{
            sb.append('N');
        }

        return sb.toString();
    }
}
  • Point
    1. Java에 문자열을 추가할 때 StringBuilder를 사용하자
    2. 연속된 String문자열에서 특정 문자를 빼오고 싶을 땐 CharAt을 사용하자

0개의 댓글