728x90
INDEX
https://school.programmers.co.kr/learn/courses/30/lessons/118666
Solution
저는 최대한 코드를 한눈에 알아보기 쉽게 작성하는 걸 좋아합니다.
이번 문제도 알아보기 쉽고 단순한 코드로 작성했습니다.
총 16가지의 성격 유형이 있고, 주어지는 대답과 그에 따른 점수표를 완성하여 조건에 맞는 성격유형을 반환해야 합니다.
survey의 각 원소는 앞에서부터 비동의에 대한 유형, 동의에 대한 유형 순서로 이루어져 있습니다.
choices는 각 항목에 대한 응답 (매우 비동의(1), 비동의(2), 약간 비동의(3), 모르겠음(4), 약간 동의(5), 동의(6), 매우 동의(7) )을 의미합니다.
이를 MAP 형식으로 만들어보면 다음과 같습니다.
let answerMap = {
'R': 0, 'T' :0, 'C': 0, 'F' :0, 'J' :0, 'M' : 0, 'A' : 0,'N' : 0
}
const choiceMap = {1 : 0, 2 : 0, 3 :0, 4 : -1, 5: 1, 6 : 1, 7 : 1}
const scoreMap = {1 : 3, 2 : 2, 3 :1, 4 : 0, 5: 1, 6 : 2, 7 : 3}
answerMap
에는 각 점수의 합산을, choiceMap
은 survey
원소의 INDEX 값을, scoreMap
은 점수표를 의미합니다.
만약 survey가 AN
, choice 가 5인 경우 동의
에 체크를 하였으므로 "AN" 중에서 뒷 알파벳인 N에 1 점을 주어야 합니다.
이렇게 취합한 점수표를 바탕으로 이제 result를 출력해야 합니다.
1번 지표부터 4번지 표까지 순서대로 result에 조건에 맞는 알파벳을 넣습니다.
let answer = "";
answer += answerMap['R'] >= answerMap['T'] ? 'R' : 'T';
answer += answerMap['C'] >= answerMap['F'] ? 'C' : 'F';
answer += answerMap['J'] >= answerMap['M'] ? 'J' : 'M';
answer += answerMap['A'] >= answerMap['N'] ? 'A' : 'N';
return answer;
전체 코드 첨부합니다.
function solution(survey, choices) {
const answerMap = {
'R': 0, 'T' :0, 'C': 0, 'F' :0, 'J' :0, 'M' : 0, 'A' : 0,'N' : 0
}
let choiceMap = {1 : 0, 2 : 0, 3 :0, 4 : -1, 5: 1, 6 : 1, 7 : 1}
let scoreMap = {1 : 3, 2 : 2, 3 :1, 4 : 0, 5: 1, 6 : 2, 7 : 3}
for(let i=0; i<choices.length; i++){
if(choices[i] !== 4){
const choice = choices[i]
const surveyIndex = choiceMap[choice];
const type = survey[i][surveyIndex];
const score = scoreMap[choice];
answerMap[type] += score;
}
}
let answer = "";
answer += answerMap['R'] >= answerMap['T'] ? 'R' : 'T';
answer += answerMap['C'] >= answerMap['F'] ? 'C' : 'F';
answer += answerMap['J'] >= answerMap['M'] ? 'J' : 'M';
answer += answerMap['A'] >= answerMap['N'] ? 'A' : 'N';
return answer;
}
'알고리즘 스터디' 카테고리의 다른 글
[Programmers] 2022 KAKAO BLIND RECRUITMENT신고 결과 받기 - Javascript (0) | 2023.09.25 |
---|---|
[Programmers] 기사단원의 무기 - Javascript (0) | 2023.09.24 |
2023 KAKAO BLIND RECRUITMENT-개인정보 수집 유효기간 (0) | 2023.09.13 |
[Python] BOJ 2004 조합 0의 개수 (0) | 2021.07.21 |
[JAVA] BOJ 9375 패션왕 김해빈 (0) | 2021.07.21 |