본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Programmers] level 1: K번째 수 by JavaScript

by codingBear 2022. 7. 4.
728x90
반응형

 이번 글은 아래 링크의 글들을 참조하여 작성하였습니다.

 

[프로그래머스] K번째 수 | JavaScript

K번째수 배열을 얼마나 잘 다루는지 보는 테스트이다. 다시 말해 배열의 인덱스, 순서 처리와 정렬 등을 할 수 있는지 보는 테스트인 것 같다. 배열 array의 i번째 숫자부터 j번째 숫자까지 자른 후

onlydev.tistory.com


 이번 문제에 대한 자세한 사항은 다음 링크를 참조하길 바랍니다.

 

slice() 메서드와 sort() 메서드만 잘 활용한다면 수월하게 풀 수 있는 문제이다. 먼저 for문을 돌면서 변수 i, j, k에 각각 잘라내기 시작 인덱스, 잘라내기 끝 인덱스, 반환값의 인덱스를 넣어주고 잘라낸 배열을 정렬한 다음 정답 배열 answer에 해당 값을 push 해준다.

 Solution 1은 내가 푼 답이고 Solution 2는 개발 전용차선님의 블로그에서 발췌한 해답이다. filter를 활용하여 배열을 잘라낸 부분이 돋보이는 해답이다.

 

Solutions

Solution 1.
function solution(array, commands) {
  const answer = [];

  for (let idx = 0; idx < commands.length; idx++) {
    const i = commands[idx][0]; // 자르기 시작 idx
    const j = commands[idx][1]; // 자르기 끝 idx
    const k = commands[idx][2]; // 반환값 idx

    const result = array.slice(i - 1, j).sort((a, b) => a - b)[k - 1];
    answer.push(result);
  }

  return answer;
}
Solution 2.
function solution(array, commands) {
  return commands.map((command) => {
    const [startIdx, endIdx, returnIdx] = command;
    const answer = array
      .filter((value, fIndex) => fIndex >= startIdx - 1 && fIndex <= endIdx - 1)
      .sort((a, b) => a - b)[returnIdx - 1];

    return answer;
  });
}

 

728x90
반응형

댓글