250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 KAKAO JS)성격 유형 검사하기 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주어진 조건대로 맵핑을 진행하면 쉽게 풀 수 있다.
성격 유형의 각 지표는 사전순으로 주어졌기 때문에 그대로 array에 저장.
성격의 점수를 저장하기 위한 map도 선언한다.
survey를 순회하면서 점수를 구한다.
front와 back으로 문자열을 두 개의 문자로 나눈다.
또한, choice[i]의 점수로 어느 성격 지표에 점수를 더할지 정한다.
만약 4점 미만이라면 front 성격에, 4점 초과라면 back 성격에 점수를 더한다.
점수를 더하는 부분은 calculator라는 함수로 정의한다.
만약 choice가 1 또는 7점이라면 3점을
choice가 2 또는 6 2점을
나머지는 1점을 더해준다.
더해줄 때, map에 해당 성격이 있다면 += 연산을, 그렇지 않다면 새롭게 저장해야 하기 때문에 = 연산을 진행한다.
계산이 끝나면 arr를 순회하면서 각 지표마다 높은 성격을 answer에 저장한다.
answer에 더할 성격인 char와 점수 score를 이용.
만약 char가 비어있다면 사전순으로 빠른 성격의 유형을 더해준다.
그렇지 않다면 char를 answer에 더해 답을 구한다.
function solution(survey, choices) {
let answer = "";
const arr = [["R", "T"], ["C", "F"], ["J", "M"], ["A", "N"]];
const map = {};
const calculator = (char, choice) => {
let res = 1;
if(choice === 1 || choice === 7){
res = 3;
} else if(choice === 2 || choice === 6){
res = 2;
}
if(map[char]){
map[char] += res;
} else{
map[char] = res;
}
}
for(let i = 0; i < survey.length; i++){
const front = survey[i][0];
const back = survey[i][1];
const choice = choices[i];
if(choice < 4){
calculator(front, choice);
} else if(choice > 4){
calculator(back, choice);
}
}
for(let i = 0; i < 4; i++){
let score = 0;
let char = "";
for(let j = 0; j < 2; j++){
if(map[arr[i][j]]){
if(score < map[arr[i][j]]){
char = arr[i][j];
score = map[arr[i][j]];
}
}
}
if(char === ""){
answer += arr[i][0];
} else{
answer += char;
}
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > KAKAO' 카테고리의 다른 글
(프로그래머스 KAKAO JS)이모티콘 할인행사 (0) | 2023.02.19 |
---|---|
(프로그래머스 KAKAO JS)두 큐 합 같게 만들기 (0) | 2022.08.20 |
(프로그래머스 KAKAO JS)길 찾기 게임 (0) | 2022.06.26 |
(프로그래머스 c++ KAKAO)신고 결과 받기 (0) | 2022.05.04 |
(프로그래머스 C++ KAKAO)표 편집 (0) | 2022.04.14 |