✔ 성격 유형 검사하기
문제 분석하기
선택지로는 1 ~ 7이므로
1 ~ 3일 경우 성격 유형 중 앞 유형에 각 3 ~ 1점을 주도록 함
4일 경우 건너뜀
5 ~ 7일 경우 성격 유형 중 뒤 유형에 각 1 ~ 3점을 주도록 함
손으로 풀어보기
- RTCFJMAN에 따른 점수 정수 배열 생성
- 각 선택에 따른 점수 정수 배열 갱신
- 4보다 클 경우 성격 유형 중 뒤 유형에 각 3 ~ 1점을 주도록 함 (선택 - 4)
- 4일 경우 건너뜀
- 4보다 작을 경우 성격 유형 중 앞 유형에 각 1 ~ 3점을 주도록 함 (4 - 선택)
- 점수 정수 배열을 2개씩 돌면서 더 큰 점수의 성격을 answer에 추가
- answer 반환
슈도코드 작성하기
survey(질문마다 판단하는 지표)
choices(검사자가 각 질문마다 선택한 선택지)
answer(검사자의 성격 유형 검사 결과)
point(RTCFJMAN에 따른 점수 정수 배열)
personality(성격 유형 RTCFJMAN)
for(i -> survey의 길이만큼) {
if(choices[i]가 4보다 크다면) {
성격 유형 중 뒤 유형에 각 3 ~ 1점을 주도록 함 (선택 - 4)
}
else if(choices[i]가 4라면) {
건너뜀
}
else {
성격 유형 중 앞 유형에 각 1 ~ 3점을 주도록 함 (4 - 선택)
}
}
for(i -> point의 길이/2만큼) {
if(성격 유형 중 앞의 성격 유형이 더 크거나 같을 경우)
answer에 앞의 성격 유형 추가
else
answer에 뒤의 성격 유형 추가
}
answer 반환
코드 구현하기
/**
* 118666) 성격_유형_검사하기
*/
public class L056_118666 {
// survey(질문마다 판단하는 지표)
// choices(검사자가 각 질문마다 선택한 선택지)
public String solution(String[] survey, int[] choices) {
// answer(검사자의 성격 유형 검사 결과)
String answer = "";
// point(RTCFJMAN에 따른 점수 정수 배열)
int[] point = new int[8];
// personality(성격 유형 RTCFJMAN)
String personality = "RTCFJMAN";
for (int i = 0; i < survey.length; i++) {
// choices[i]가 4보다 크다면
if (choices[i] > 4) {
// 성격 유형 중 뒤 유형에 각 3 ~ 1점을 주도록 함 (선택 - 4)
String p = survey[i].split("")[1];
point[personality.indexOf(p)] += choices[i] - 4;
}
// choices[i]가 4라면
else if (choices[i] == 4) {
// 건너뜀
continue;
}
// choices[i]가 4보다 작다면
else {
// 성격 유형 중 앞 유형에 각 1 ~ 3점을 주도록 함 (4 - 선택)
String p = survey[i].split("")[0];
point[personality.indexOf(p)] += 4 - choices[i];
}
}
for (int i = 0; i < point.length / 2; i++) {
// 성격 유형 중 앞의 성격 유형이 더 크거나 같을 경우
if (point[i * 2] >= point[i * 2 + 1])
// answer에 앞의 성격 유형 추가
answer += personality.split("")[i * 2];
else
// answer에 뒤의 성격 유형 추가
answer += personality.split("")[i * 2 + 1];
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L056_118666 solution = new L056_118666();
String[] survey = { "TR", "RT", "TR" };
int[] choices = { 7, 1, 3 };
String result = solution.solution(survey, choices);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[87389] 나머지가 1이 되는 수 찾기 (0) | 2023.12.17 |
---|---|
[92334] 신고 결과 받기 (0) | 2023.12.16 |
[131128] 숫자 짝꿍 (0) | 2023.12.15 |
[131705] 삼총사 (0) | 2023.12.15 |
[132267] 콜라 문제 (0) | 2023.12.14 |