씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[JavaScript]성격 유형 검사하기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1)
알고리즘/Programmers

[JavaScript]성격 유형 검사하기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1)

2022. 10. 1. 13:33
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
    '알고리즘/Programmers' 카테고리의 다른 글
    • [JavaScript]최솟값 만들기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 2)
    • [JavaScript]신고 결과 받기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1)
    • [Programmers]약수의 개수와 덧셈_자바 / 프로그래머스 연습문제(level 1)
    • [Programmers]서울에서 김서방 찾기_자바 / 프로그래머스 연습문제(level 1)
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바