JavaScript 코딩 연습 / K번째 수

2020. 3. 17. 17:07Today I solved/Problems

문제 / 웹사이트

K번째 수 / 프로그래머스

 

난이도

Level 1

 

내용

모의고사를 치게 된 3명의 학생이 각각 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...], [2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5]의 패턴대로 문제를 찍기로 했습니다. 1번부터 마지막 문제까지의 정답이 들어있는 'answers' 배열이 주어질 때, 가장 많은 문제를 맞힌 학생의 번호을 구하는 함수를 작성하세요.

※ 가장 높은 점수를 받은 사람이 여럿일 경우, return 값은 오름차순으로 정렬되어 있어야 합니다.

 

예시

array commands return
[1, 5, 2, 6, 3, 7, 4] [ [2, 5, 3], [4, 4, 1], [1, 7, 3] ] [5, 6, 3]

공부해야 될 부분

  • JavaScript에서의 변수/상수 선언방법
    • 참고자료
    •  var
      • JavaScript ES5까지는 유일했던 변수 선언방법
      • 변수를 재선언하는 것과 변수에 값을 재할당하는 것 모두 가능
    • let
      • JavaScript ES6에서 도입된 변수 선언방법
      • 변수를 재선언하는 것은 불가능하지만 변수에 값을 재할당하는 것은 가능
    • const
      • JavaScript ES6에서 도입된 상수 선언방법
      • 변수를 재선언하는 것과 변수에 값을 재할당하는 것 모두 불가능

 

개선해야 될 부분

  • 변수/상수에 따라 유동적으로 let과 const 사용하기
    • let: 변수의 값이 변할 경우
      • 반복문 등
    • const: 변수의 값이 변하지 않을 경우 (상수)

 

내 답안 ≒ 모범 답안

function solution(array, commands) {
    return commands.map(cmd => {
        let start = cmd[0] - 1, end = cmd[1], index = cmd[2] - 1;
        return array.slice(start, end).sort((a, b) => a - b)[index];
    });
}