프로그래머스 Lv.1 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기
질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices가 매개변수로 주어졌을 때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return하도록 solution 함수를 작성하는 문제이다.
검사자가 고른 선택지(choices)에 따라 점수를 더할 성격유형과 점수를 처리한다. 성격 유형을 담은 char배열 person과 person과 크기가 같은 int배열 score을 선언하여 점수를 합산한다.
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
char[] person = { 'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N' }; // 성격 유형
int[] score = new int[8]; // 성격 유형 점수
for (int i = 0; i < survey.length; i++) {
char da = '\0';
int s = choices[i]; // 선택지
if (s < 4) { // 비동의 관련 선택지
da = survey[i].charAt(0); // 첫 번째 캐릭터
if (s == 1) {
s = 3;
} else if (s == 3) {
s = 1;
}
} else if (s > 4) { // 동의 관련 선택지
da = survey[i].charAt(1); // 두 번째 캐릭터
s -= 4;
} else {
continue; // 모르겠음 선택 시 점수를 얻지 않음.
}
for (int j = 0; j < person.length; j++) {
if (da == person[j]) {
score[j] += s; // 동일한 인덱스 값에 점수를 더하기
}
}
}
for (int i = 0; i < person.length; i = i + 2) {
if (score[i] < score[i+1]) {
answer += person[i+1];
} else if (score[i] > score[i+1]) {
answer += person[i];
} else { // 성격 유형 점수가 같으면 사전 순으로 빠른 성격 유형
if (person[i] > person[i+1]) {
answer += person[i+1];
} else {
answer += person[i];
}
}
}
return answer;
}
}