[알고리즘/Programmers] K번째수

해달·2021년 7월 20일
0
post-thumbnail

문제


내 풀이

sort((a,b) => a-b) 를 구현하지 못해서 실패
test하다가 내 코드 날렸다..
나는 for문으로 구현하려 했었다.

다른 분 풀이

-01
function solution(array, commands) {
    
    return commands.map(
        ([from, to, k]) => // map에서 불러온 배열들을 순서대로 from,to,k 로 넣는다 
      // 배열에 넣기때문에 인덱스의 값이 아닌 배열들의 순서대로 변수가 주어짐
            array.slice(from - 1, to).sort((a, b) => a - b)[k - 1],
    );

  
-02
  function solution(array, commands) {
    return commands.map(command => {
      // command에 배열을 담고
        const [sPosition, ePosition, position] = command
        // 구조분해할당으로 그 배열들을 차례대로 변수에 담아준다
        const newArray = array
        // 새 배열 선언
            .filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
        // array의 배열을 가지고와서 filter를 하는데 인덱스를 사용하여 filter로 slice기능 구현
        // newArray = 1 5 2 6 3 7 4 , sposition = 2  (-1 = 1) , eposition = 5 (-1 =4)
        //  1 >= && 4 <= , index의 값이 1보다 크거나 같고 4보다 작거나 같을때
        // idex ( 1,2,3,4 )  === [ 5,2,6,3 ] 
        
        // 이 부분이 충격..! slice(fINdex >= sPosition -1 , fIndex <= ePosition -1) 이런느낌?
            .sort((a,b) => a - b)    
        // filter 한 배열을 sort로 정렬
        // [ 2,3,5,6 ]

        return newArray[position - 1]
      // position = 3 / index는 2번째 인덱스니까 -1
      // [2,3,5,6] 에서 2번째 index 5 return
      // 이 return 값은 map 의 return 
      // 이걸 array에 담긴 배열의 수만큼 반복 !!)
    })
}
  
  이걸 깔끔하게 정리한게 -01번의 수식같다

알게 된 것 (1)

구조분해할당

구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.

배열 구조 분해 였다.


.sort((a, b) => a - b) MDN공식문서

메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다
(복사본 만들어지는것 X , 원 배열이 정렬)

sort의 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.


문자열 대신 숫자를 비교해야 할 때

배열의 오름차순

function compareNumbers(a, b) {
 return a - b;
}
-
.sort((a, b) => a - b)  // 오름차순 정렬?


  • .map(([a,b,c]) => ) 이렇게 위치에 맞추어서 사용할 수 있고
  • 구조분해할당으로 배열 구조 분해 하기
    const [sPosition, ePosition, position] = command
  • 구조분해할당 배우고나서 안쓰니까 까먹어 버린다
  • 이런걸 기억해서 어디서 사용하면 좋을지 응용할 수 있게 떠올려야하는데
    아무래도 많이 쓰고 보고 기억하고 떠올리고 해야겠다..

0개의 댓글

관련 채용 정보