Lv1. K번째수

📚 문제


https://programmers.co.kr/learn/courses/30/lessons/42748

💡 접근


  1. slice 함수를 이용해서 i부터 j까지 배열을 자른다.
  2. 자른 배열을 sort
  3. 반복문에서 answer의 마지막 인덱스에 k번 째 값을 push해서 요소를 추가해준다.

⌨️ 코드


function solution (array, commands){
	var answer = [];
  
    for (var i = 0; i < commands.length; i++){
        
        var sliceArray = temp.slice(commands[i][0]-1,commands[i][1]);
        sliceArray.sort((a,b) => a-b);
        answer.push(sliceArray[commands[i][2]-1]);
    }
    
    return answer ;
}

✅ method 정리


  • .splice()

    • syntax
     array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
    • 매개변수

      • start : 배열/문자열의 변경을 시작할 인덱스
      • deleteCount : 제거할 요소의 갯수
      • item : 배열에 추가할 요소, 아무 요소도 지정하지 않으면 요소 제거만 한다.
    • 반환 값 : 제거한 요소를 담은 배열

  • .sort()

    • syntax
     arr.sort([compareFunction])
    • 매개변수
      • compareFunction : 정렬 순서를 정의하는 함수. 생략하면 배열은 각 문자의 유니코드 값에 따라 정렬된다.
    • 반환 값 : 정렬된 배열. 단, 새로운 배열이 만들어지는 것이 아님.
    • Description
      • function(a,b) < 0 경우, a를 b보다 낮은 인덱스로 정렬
      • function(a,b) = 0 경우, a = b
      • function(a,b) > 0 경우, b를 a보다 낮은 인덱스로 정렬
    • 코드
      • 숫자 9와 80을 비교하려면 숫자는 문자열로 변환되기 때문에 유키코드 순서로 80이 9보다 앞에 오게된다.
        따라서 숫자를 비교하기 위해 a - b를 return 해준다.
      	// 문자열 비교
        function compare(a, b) {
          if (a < b) return -1; //a가 b보다 작을 경우
          if (a > b) return 1; //a가 b보다 클 경우
          return 0; // a랑 b가 같을 경우

        // 숫자 비교
        function compare((a, b) => a-b);
  • array.push()
    • 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환한다.
    • syntax
      arr.push(element1[, ...[, elementN]])
    • 매개변수
      • elementN : 배열의 끝에 추가할 요소
      • 반환 값 : 호출한 배열의 새로운 길이
    • 코드
        const animals = ['pigs', 'goats', 'sheep'];

        const count = animals.push('cows');
        console.log(count);
         // output : 4
        console.log(animals);
         // output : Array ["pigs", "goats", "sheep", "cows"]

📝 리뷰


push() 반환 값은 배열의 길이

자꾸 변수 하나를 선언해서 거기에 push 반환 값을 저장했는데 그렇게 하면 배열의 길이만 나오기 때문에 계속 틀렸던 것 같다.. 왜 그렇게 한걸까 ?ㅎ

좋은 웹페이지 즐겨찾기