(JS) Programmers : 성격 유형 검사하기 - 객체를 배열로 변환, 절댓값

2024. 9. 30. 20:16·컴퓨터 과학/프로그래머스 문제풀이
더보기
더보기

코딩테스트 연습 - 성격 유형 검사하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제를 풀기위해 아래와 같은 요소들을 고려하였다.

  1. 객체를 효율적으로 활용하기 위해 key와 value를 배열로 변환하여 사용한다.
  2. 더해줄 점수 값을 효율적으로 계산하기 위해 선택된 점수에서 4를뺀뒤 절댓값을 취하도록 한다.
더보기
더보기
function solution(survey, choices) {
    let obj = {R:0, T:0, C:0, F:0, J:0, M:0, A:0, N:0}
    
    for(let i = 0;i<survey.length;i++){
        var nowScore = choices[i]-4;
        if(nowScore < 0) {
            obj[survey[i][0]] += Math.abs(nowScore)
        } else {
            obj[survey[i][1]] += Math.abs(nowScore)
        }
    }
    
    let totalScore = Object.values(obj);
    var answer = '';
    
    for(let j = 0;j<8;j=j+2){
        if(totalScore[j] >= totalScore[j+1]) {
            answer = answer + Object.keys(obj)[j]
        } else {
            answer = answer + Object.keys(obj)[j+1]
        }
    }
    
    return answer;
}

 

 

• 객체의 key, value를 각각 배열로 변환하기

객체의 key값과 value값을 각각 배열로 변환할 수 있다.

 

ex) 객체 obj = { A:1, B:2, C:3 } 일때

  • let keyArray = Object.keys(obj);    // [ "A", "B", "C" ]
  • let valueArray = Object.values(obj);    // [ 1, 2, 3 ]

 

• 절댓값

Math 내장객체를 활용해서 수의 절댓값을 사용할 수 있다.

 

ex) 수 let num = -3 일때

  • let absNum = Math.abs(num);    // 3

문제에서는 1~7 범위의 점수를 3,2,1,0,1,2,3의 점수 범위로 변환할 때 사용했다. (점수 - 4의 절댓값)

 

 

※ 삼항연산자, forEach 반복문

문제에서 사용한 if 조건문과 for 반복문은 삼항연산자와 forEach 반복문으로 좀더 간소화 시킬 수 있다.

 

• 삼항연산자

true/false 같은 두개로 나누어지는 조건으로 코드를 실행할때 if문을 사용하는 대신 삼항연산자를 사용하면 코드가 간결해진다.

조건 ? true일경우실행 : false일경우실행;

 

• forEach

배열의 각 요소를 순회하면서 지정된 함수를 실행하고자 할때 사용할 수 있다.

array.forEach((현재 배열값, 현재 인덱스, 배열전체) => {
  // 주로 현재 배열값과 인덱스값을 많이 사용함
  // 실행할 코드
});

 

 

 

'컴퓨터 과학 > 프로그래머스 문제풀이' 카테고리의 다른 글

(JS) Programmers : 붕대 감기  (0) 2024.10.04
(JS) Programmers : 신고 결과 받기 - Set()  (0) 2024.10.01
(JS) Programmers : 달리기 경주 - 동적 객체 key와 배열/객체 탐색  (0) 2024.09.30
(JS) Programmers : 최솟값 만들기 - 배열 정렬과 연산 - sort, reduce  (0) 2024.09.29
(JS) Programmers : 동영상 재생기 - 문자열과 숫자 변환 (split, map, toString, padStart)  (0) 2024.09.28
'컴퓨터 과학/프로그래머스 문제풀이' 카테고리의 다른 글
  • (JS) Programmers : 붕대 감기
  • (JS) Programmers : 신고 결과 받기 - Set()
  • (JS) Programmers : 달리기 경주 - 동적 객체 key와 배열/객체 탐색
  • (JS) Programmers : 최솟값 만들기 - 배열 정렬과 연산 - sort, reduce
루트노트
루트노트
  • 루트노트
    루트노트
    루트노트
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (73) N
      • 웹 (45) N
        • HTML, CSS (11)
        • JS (11)
        • Node.js (3)
        • React (10)
        • Next.js (7) N
        • MongoDB (1)
        • Design (2)
      • 애플리케이션 (5)
        • Swift (4)
        • React Native (1)
      • AI (0)
        • 컴퓨터 비전 (영상처리) (0)
      • 임베디드 (4)
        • 아두이노 (0)
        • 라즈베리파이 (0)
        • 젯슨 (1)
        • 리눅스 (3)
      • 컴퓨터 과학 (18)
        • 자료구조 (0)
        • 알고리즘 • 수학 (3)
        • 백준 문제풀이 (4)
        • 프로그래머스 문제풀이 (9)
        • 기타 (2)
      • 개인 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
루트노트
(JS) Programmers : 성격 유형 검사하기 - 객체를 배열로 변환, 절댓값
상단으로

티스토리툴바