728x90
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
레벨1 문제치고는 이제 막 코딩테스트를 준비하는 분들에게는 고민이 조금 필요할수 있었던 문제였던것같습니다.
사실 뭐 저도 요새 코테준비 손놓고있다가 1년만에 문제를 보는거라... 바로 슥슥 풀리진 않고 고민을 조금 했습니다.
일단 문제를 보시면 MBTI를 구하는 문제라고 생각하시면 되는데 설명이 거창해서 겁을 지레 먹으실수도 있지만,,,
코드의 가독성이나 효율성의 차이지 많이 어렵지는 않은 문제였습니다.
우선 저의 코드를 먼저 볼까요??
const point = { R: 0, T: 0, C: 0, F: 0, J: 0, M: 0, A: 0, N: 0, }
function solution(survey, choices) {
survey.forEach((question, index) => {
switch(choices[index]) {
case 1: case 2: case 3: case 4:
point[question.slice(0, 1)] += 4 - choices[index];
break;
case 5: case 6: case 7:
point[question.slice(-1)] += choices[index] - 4;
break;
}
});
return pointToMbti('R', 'T') + pointToMbti('C', 'F') + pointToMbti('J', 'M') + pointToMbti('A', 'N');
};
const pointToMbti = (a_point, b_point) => point[a_point] >= point[b_point] ? a_point : b_point;
point라는 오브젝트를 먼저 선언하여 각 성격의 유형을 만들어 두고 각 유형들을 반복하여 어떤 유형에 점수를 담을지 계산하였습니다.
그리고 마지막에는 더 높은 숫자의 유형을 리턴해주는 함수를 만들어서 각 유형들을 구하여 더해주는 로직인데요.
뭔가 초보적이면서 깔끔하다고 생각도 했지만... 이 문제를 풀고 다른 풀이들을 보니 저는 역시 한참 멀었습니다.... ㅠ.ㅠ
여러분들은 어떻게 푸셨나요??
++
그냥 문득 이 코드를 다시 보면 볼떄마다 코드의 길이가 줄어드는데...
이렇게 풀게 되면 사실 굳이 스위치문을 쓸필요도 없다..
const point = { R: 0, T: 0, C: 0, F: 0, J: 0, M: 0, A: 0, N: 0, }
function solution(survey, choices) {
survey.forEach((question, index) =>
choices[index] >= 4 ?
point[question.slice(0, 1)] += 4 - choices[index] :
point[question.slice(-1)] += choices[index] - 4);
return pointToMbti('R', 'T') + pointToMbti('C', 'F') + pointToMbti('J', 'M') + pointToMbti('A', 'N');
};
const pointToMbti = (a_point, b_point) => point[a_point] >= point[b_point] ? a_point : b_point;
그냥 이렇게 상함연산자 써도 될것을..
728x90
'알고리즘 > Programmers' 카테고리의 다른 글
[JavaScript]최솟값 만들기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 2) (0) | 2022.11.06 |
---|---|
[JavaScript]신고 결과 받기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1) (0) | 2022.10.21 |
[Programmers]약수의 개수와 덧셈_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.23 |
[Programmers]서울에서 김서방 찾기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.20 |
[Programmers]두 개 뽑아서 더하기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.19 |