일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정처기
- 2023년회고
- JAVA.
- 정보처리기사기출
- python
- JavaPersistenceApi
- SQL개발자시험
- 코딩역량인증시험
- 코딩테스트
- 프로그래머스자바
- 코테
- 자바알고리즘
- PCCE
- SQL개발
- DB
- springboot3
- java
- sql
- programmers
- 개발자
- PCSQL
- 정보처리기사
- PCCP
- 정보처리기사대비
- JPAdata
- Oracle
- 알고리즘
- 2024년정보처리기사
- 프로그래머스
- 자바
- Today
- Total
똘이의 개발 Life
[ 프로그래머스 JAVA ] 성격 유형 검사 본문
참고 사이트
https://school.programmers.co.kr/learn/courses/30/lessons/250125
걸린 시간
09:00 ~ 09:34 // 소요 시간 34분
피드백
문제 이해력
문제에 맞는 구문 구사
Switch 문 , for 문 등
문제
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 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점 |
이때 검사자가 질문에서 약간 동의 선택지를 선택할 경우 어피치형(A) 성격 유형 1점을 받게 됩니다. 만약 검사자가 매우 비동의 선택지를 선택할 경우 네오형(N) 성격 유형 3점을 받게 됩니다.
위 예시처럼 네오형이 비동의, 어피치형이 동의인 경우만 주어지지 않고, 질문에 따라 네오형이 동의, 어피치형이 비동의인 경우도 주어질 수 있습니다.
하지만 각 선택지는 고정적인 크기의 점수를 가지고 있습니다.
- 매우 동의나 매우 비동의 선택지를 선택하면 3점을 얻습니다.
- 동의나 비동의 선택지를 선택하면 2점을 얻습니다.
- 약간 동의나 약간 비동의 선택지를 선택하면 1점을 얻습니다.
- 모르겠음 선택지를 선택하면 점수를 얻지 않습니다.
검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.
질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices가 매개변수로 주어집니다. 이때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.
문제 풀이
public class Pro118666 {
class Solution {
// {{R , T} , { C , F } , { J , M } , { A , N }} 순으로 점수 기입
private int [][] points = new int[4][2];
public String solution(String[] survey, int[] choices) {
String answer = "";
// 설문지와 선택지 모두 point 에 점수 기입하는 함수 호출
for( int i = 0; i < survey.length ; i++ ){
convert( survey[i] , choices[i] );
}
// 점수가 모두 기입 되었을 때 성격 유형 반환하기
// 같을 경우 사전 순으로 기입
if(points[0][0] >= points[0][1]){
answer += "R";
}
else{
answer += "T";
}
if(points[1][0] >= points[1][1]){
answer += "C";
}
else{
answer += "F";
}
if(points[2][0] >= points[2][1]){
answer += "J";
}
else{
answer += "M";
}
if(points[3][0] >= points[3][1]){
answer += "A";
}
else{
answer += "N";
}
return answer;
}
private void convert( String category , int choice ){
// switch 문으로 각 카테고리 별 점수 환산
switch ( category ){
case "RT" :
// 부정일 경우 앞쪽에 점수 부여 "R"
if( choice < 4 ){
points[0][0] += ( 4 - choice );
}
// 긍정일 경우 뒤 쪽에 점수 부여 "T"
else if ( choice > 4 ){
points[0][1] += ( choice - 4 );
}
break;
case "TR" :
// 부정일 경우 앞쪽에 점수 부여 "T"
if( choice < 4 ){
points[0][1] += ( 4 - choice );
}
// 긍정일 경우 뒤 쪽에 점수 부여 "R"
else if ( choice > 4 ){
points[0][0] += ( choice - 4 );
}
break;
case "CF" :
if( choice < 4 ){
points[1][0] += ( 4 - choice );
}
else if ( choice > 4 ){
points[1][1] += ( choice - 4 );
}
break;
case "FC" :
if( choice < 4 ){
points[1][1] += ( 4 - choice );
}
else if ( choice > 4 ){
points[1][0] += ( choice - 4 );
}
break;
case "JM" :
if( choice < 4 ){
points[2][0] += ( 4 - choice );
}
else if ( choice > 4 ){
points[2][1] += ( choice - 4 );
}
break;
case "MJ" :
if( choice < 4 ){
points[2][1] += ( 4 - choice );
}
else if ( choice > 4 ){
points[2][0] += ( choice - 4 );
}
break;
case "AN" :
if( choice < 4 ){
points[3][0] += ( 4 - choice );
}
else if ( choice > 4 ){
points[3][1] += ( choice - 4 );
}
break;
case "NA" :
if( choice < 4 ){
points[3][1] += ( 4 - choice );
}
else if ( choice > 4 ){
points[3][0] += ( choice - 4 );
}
break;
default :
break;
}
}
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 JAVA ] 로또의 최고 순위와 최저 순위 (0) | 2024.01.08 |
---|---|
[ 프로그래머스 JAVA ] 바탕 화면 정리 (1) | 2024.01.08 |
[ 프로그래머스 JAVA ] 신규 아이디 추천 (1) | 2024.01.08 |
[ 프로그래머스 JAVA ] PCCP 기출문제 1번 붕대 감기 (2) | 2024.01.07 |
[ 프로그래머스 JAVA ] 가장 많이 받은 선물 풀이 (0) | 2024.01.04 |