문제 설명
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.
지표 번호 | 성격 유형 |
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다.
검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.
- 매우 비동의, 비동의, 약간 비동의, 모르겠음, 약간 동의, 동의, 매우 동의
각 질문은 1가지 지표로 성격 유형 점수를 판단합니다.
예를 들어, 어떤 한 질문에서 4번 지표로 아래 표처럼 점수를 매길 수 있습니다.
선택지 | 성격 유형 점수 |
매우 비동의 | 네오형 3점 |
비동의 | 네오형 2점 |
약간 비동의 | 네오형 1점 |
모르겠음 | 어떤 성격 유형도 점수를 얻지 않습니다 |
약간 동의 | 어피치형 1점 |
동의 | 어피치형 2점 |
매우 동의 | 어피치형 3점 |
...
검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.
질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices가 매개변수로 주어집니다. 이때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.
문제 풀이
저는 이 문제에 접근할 때 각 성격 유형에 대한 점수를 어떻게 관리하지에 집중했습니다.
각 유형별로 HashMap에 0점 시작으로 저장하고 설문조사에 따라 "AN"일 때 5점이상이면 N에 점수, 4점 미만일 때는 A에 점수가 부여하도록 구현하였습니다.
풀이 코드
import java.util.*;
class Solution {
private Map<Character, Integer> typeMap = new HashMap();
public String solution(String[] survey, int[] choices) {
StringBuilder sb = new StringBuilder();
int[] score = {0, 3, 2, 1, 0, 1, 2, 3};
char[] types = {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
for (int i=0; i<types.length; i++)
typeMap.put(types[i], 0);
for (int i = 0; i < survey.length; i++) {
int pos = 0;
if (choices[i] >= 5) pos = 1;
typeMap.put(survey[i].charAt(pos), typeMap.get(survey[i].charAt(pos))+score[choices[i]]);
}
for (int i=0; i<types.length; i+=2) {
if (typeMap.get(types[i]) >= typeMap.get(types[i+1]))
sb.append(types[i]);
else
sb.append(types[i+1]);
}
return sb.toString();
}
}
<출처>
https://school.programmers.co.kr/learn/courses/30/lessons/118666
'프로그래머스 > Level1' 카테고리의 다른 글
[프로그래머스][Kotlin] 로또의 최고 순위와 최저 순위 (0) | 2022.08.05 |
---|---|
[프로그래머스][Kotlin] 신고 결과 받기 - 2022 KAKAO BLIND RECRUITMENT (0) | 2022.07.31 |
[프로그래머스][Kotlin] 신규 아이디 추천 - 2021 KAKAO BLIND RECRUITMENT (0) | 2022.07.31 |
[프로그래머스][Java] 다트 게임 - 2018 카카오 블라인드 채용 1차 (0) | 2022.03.03 |
[프로그래머스][Java] 비밀지도 - 2018 카카오 블라인드 채용 1차 (0) | 2022.03.03 |
댓글