일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기지국 설치 js
- 부녀회장이 될 테야
- level0
- 백준 2638번
- 1937번 욕심쟁이 판다
- 백준 1068
- 알고리즘 수업-깊이 우선 탐색1
- 백준 13023번
- 힙 자바스크립트
- dfs
- Redux
- 프로그래머스
- 1389번 케빈 베이컨의 6단계 법칙
- 백준
- JavaScript
- 백준 1068번 트리
- 알고리즘
- level1
- 2638번 치즈
- 24480번
- 자바스크립트
- 리덕스
- 우선순위 큐 자바스크립트
- 2275번
- Java
- ssh
- 기지국 설치 자바스크립트
- React
- 13023번 ABCDE
- 1303번
- Today
- Total
코딩왕랄프👊🏻
[프로그래머스] 성격 유형 검사하기 Javascript 본문
문제 설명
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 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 함수를 완성해주세요.
function solution(survey, choices) {
const type = {
0: 'R',
1: 'T',
2: 'C',
3: 'F',
4: 'J',
5: 'M',
6: 'A',
7: 'N'
}
var score = new Array(8).fill(0);
var answer = '';
function getKey(index, value){
const arr = Object.keys(type).filter((item) => type[item] === survey[index].charAt(value));
return +arr[0];
}
for(i = 0; i < survey.length; i++){
if(choices[i] < 4) score[getKey(i, 0)] += (4-choices[i]);
else if(choices[i] > 4) score[getKey(i, 1)] += (choices[i]-4);
}
for(i = 0; i < score.length; i += 2){
if(score[i] == score[i+1]){
if(type[i] < type[i+1]) answer += type[i];
else answer += type[i+1];
}
else if(score[i] > score[i+1]) answer += type[i];
else answer += type[i+1];
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로세스 (0) | 2023.07.10 |
---|---|
[프로그래머스] 타겟 넘버 (0) | 2023.04.26 |
[프로그래머스] 숫자 짝꿍 Javascript (0) | 2023.02.07 |
[프로그래머스] 삼총사 Javascript (0) | 2023.02.07 |
[프로그래머스] 옹알이(2) Javascript (0) | 2023.02.07 |