본문 바로가기
스터디/묘공단 자바 코딩테스트

[프로그래머스/Java] 8일차 코테 문풀 - Lv. 1 성격 유형 검사하기

by 빙수야 팥빙수야 2024. 4. 23.

🔗 문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

📝 문제 요약

나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.

지표 번호 성격 유형
1번 지표 라이언형(R), 튜브형(T)
2번 지표 콘형(C), 프로도형(F)
3번 지표 제이지형(J), 무지형(M)
4번 지표 어피치형(A), 네오형(N)

 

검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.

선택지
매우 비동의
비동의
약간 비동의
모르겠음
약간 동의
동의
매우 동의

 

각 질문은 1가지 지표로 성격 유형 점수를 판단합니다.

 

🔍 문제 풀이 (feat. 접근 방법)

일단 배열로 접근해 보자.

각 유형별 점수를 계산하는 변수 scores와 각 성격 유형을 잘라서 쓸 String 변수를 선언한다.

for문을 돌면서 점수를 계산해 유형을 찾아낸다.

for문을 돌면서 유형을 조합한다.

 

👩🏻‍💻 전체 코드

import static java.lang.Math.abs;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        int[] scores = {0, 0, 0, 0, 0, 0, 0, 0};
        String types = "RTCFJMAN";
        
        for (int i = 0; i < survey.length; i++) {
            int choice = choices[i];
            if (choice > 4) {
                scores[types.indexOf(String.valueOf(survey[i].charAt(1)))] += choices[i]-4;
            } else if (choices[i] < 4) {
                scores[types.indexOf(String.valueOf(survey[i].charAt(0)))] += abs(choices[i]-4);
            } else {
                continue;
            }
        }
        
        for (int i = 0; i < scores.length / 2; i++) {
            if (scores[i*2] >= scores[i*2+1]) {
                answer += String.valueOf(types.charAt(i*2));
            } else {
                answer += String.valueOf(types.charAt(i*2+1));
            }
        }
        return answer;
    }
}