목표
- 베스트 엘범 문제 풀이
- 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42748
문제 요구사항
array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
- array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
- 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
- 2에서 나온 배열의 3번째 숫자는 5입니다.
문제 풀이
정렬을 이용한 문제 풀이
- 데이터 자르기
js 배열은slice
라는 내장함수를 제공한다.slice
를 이용해 원하는 위치를 자르자. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slicecommands.forEach( value => { let ary = [...array].slice(value[0] -1, value[1] ) console.log(ary); }) => 실행결과 [ 5, 2, 6, 3 ] [ 6 ] [ 1, 5, 2, 6, 3, 7, 4 ]
-
자른 데이터 정렬하기. 정렬 하는것도 마찬가지로 js 내장함수로 제공한다.
sort
를 이용해 정렬을 하자.commands.forEach( value => { let ary = [...array].slice(value[0] -1, value[1] ).sort((a,b) => a-b); console.log(ary); }) => 실행결과 [ 2, 3, 5, 6 ] [ 6 ] [ 1, 2, 3, 4, 5, 6, 7 ]
- 원하는 데이터 추출하기
commands.forEach( value => { let ary = [...array].slice(value[0] -1, value[1] ).sort((a,b) => a-b); answer = [ ...answer, ary[value[2]-1] ]; })
결론
- sort(), sort( (a,b) => a-b) 둘다 같은 오름차순 정렬을 한다. 이둘의 차이가 무엇인지 생각해보자.