[JS/Programmers] K번째 수

정나린·2022년 3월 4일

1. 난이도: 프로그래머스 Level 1

2. 문제요약:

  • 리스트(배열)를 slicing하고 indexing하라.
  • 리스트(배열)를 조건에 맞게 sorting하라.

3. 문제핵심: 리스트(배열) 메서드를 잘 활용할 수 있는가

코드

function solution(array, commands) {
    const answer = [];
    commands.forEach(command=>{
        let arr = array;
        const [start, end, k] = command;
        arr = arr.slice(start-1, end).sort((a,b)=>a-b);
        answer.push(arr[k-1])
        })
    return answer;
    }
  • commands는 2차원 배열이고 commands의 원소 하나하나(1차원 배열, command)에 접근하기 위해서 forEach 메소드를 사용한다.
  • 구조분해 할당을 해서 손쉽게 command안의 요소들을 start, end, k 변수에 할당한다.
  • slice 메소드를 활용해서 slicing을 해준다.
  • 오름차순으로 정렬하기 위해 sort((a,b)=>a-b)를 활용한다.

sort

1. arr.sort([compareFunction])

  • compareFunction에 아무것도 적어주지 않으면,유니코드 값 순서대로 정렬되기 때문이다.
    배열의 element들은 문자열로 취급되기 때문이다.
  • 리턴 값은 compareFunction 규칙에 따라 정렬된 원본 배열(arr)이다.

2. (숫자) 정렬

1) 오름차순

arr.sort((a,b)=>a-b)
  • 두 개의 원소인 a, b를 비교해서
    - a>b이면 a가 b보다 먼저 오도록
    - a==b이면 순서를 바꾸지 않고
    - a<b이면 b가 a보다 먼저 오도록 정렬한다.
    2) 내림차순
arr.sort((a,b)=>b-a)
  • 두 개의 원소인 a, b를 비교해서
    • a>b이면 b가 a보다 먼저 오도록
    • a==b이면 순서를 바꾸지 않고
    • a<b이면 a가 b보다 먼저 오도록 정렬한다.

3. (문자열) 정렬

1) 오름차순

arr.sort()
  • sort()에 파라미터를 생략하면 원소를 문자열로 간주하고 오름차순 정렬한다.

2) 내림차순

arr.sort((a,b)=>{
     	if(a>b) return -1;
        else if(a<b) return 1;
        else return 0
     })
  • 두 개의 원소인 a, b를 비교해서
    • a==b이면 순서를 바꾸지 않고
    • a==b이면 순서를 바꾸지 않고
    • a<b이면 b가 a보다 먼저 오도록 정렬한다.

0개의 댓글