[프로그래머스 자바스크립트] ‘K번째수’ 풀어보기

2024. 8. 7. 17:21·Algorithm/Programmers(JavaScript)

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1. 나의 풀이

function solution(array, commands) {
    var answer = [];
    
    for(let arr of commands) {
        var newArr = [];
        
        for(let i = arr[0]; i <= arr[1]; i++) {
            newArr.push(array[i-1]);
        }
        
        newArr.sort((a,b) => a-b);
    
        answer.push(newArr[arr[2] - 1]);
    }
    
    return answer;
}
  1. commands 배열을 순회하면서 commands 안의 배열들에 접근한다.
    1. newArr라는 새로운 배열에 접근한다.
    2. 인덱스 arr[0]부터 인덱스 arr[1]까지 array[i-1]의 값을 newArr에 push한다.(인덱스 조심!)
    3. newArr를 sort한다.
    4. sort된 newArr에서 인덱스 arr[2] - 1(인덱스 조심!)의 값을 answer에 push한다.
  2. answer를 return 한다.

인덱스 접근을 제대로 하지 않으면 답이 제대로 나오지 않으므로 특히 조심해야 했던 문제였다.


2. 다른 사람의 풀이

function solution(array, commands) {
    return commands.map(command => {
        const [sPosition, ePosition, position] = command
        const newArray = array
            .filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
            .sort((a,b) => a - b)    

        return newArray[position - 1]
    })
}
 

 

‘const [sPosition, ePosition, position] = command’ 구문은 구조 분해 할당을 활용한 것인데,

예를 들어 command가 [1,2,3]이면 sPosition = 1, ePosition = 2, position = 3으로 할당된다.

  1. array에서 sPosition - 1에서 ePosition -1까지의 요소들을 추출해서 newArray 배열을 생성한다.
  2. newArray 배열을 정렬한다.
  3. newArray[position -1]을 return 한다.

구조 분해 할당과 filter를 활용해서 코드가 더욱 깔끔해졌다. 구조 분해 할당은 기회가 되면 다음에 써보고 싶다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] ‘입국심사’ 풀어보기  (0) 2024.12.31
[프로그래머스 자바스크립트] ‘최소직사각형’ 풀어보기  (2) 2024.08.07
[프로그래머스 자바스크립트] ‘구명보트’ 풀어보기  (0) 2024.08.07
[프로그래머스 자바스크립트] ‘체육복’ 풀어보기  (0) 2024.08.07
[프로그래머스 자바스크립트] ‘기능개발’ 풀어보기  (0) 2024.07.17
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] ‘입국심사’ 풀어보기
  • [프로그래머스 자바스크립트] ‘최소직사각형’ 풀어보기
  • [프로그래머스 자바스크립트] ‘구명보트’ 풀어보기
  • [프로그래머스 자바스크립트] ‘체육복’ 풀어보기
퀵차분
퀵차분
웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Frontend (28)
        • HTML, CSS (7)
        • Javascript (3)
        • React (11)
        • Typescript (2)
        • Next.js (4)
      • Node.js (3)
      • Study (40)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (20)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (7)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    시스템프로그래밍
    react
    음악추천
    프롬프트 엔지니어링
    알고리즘
    프로그래머스 자바스크립트
    오블완
    인공지능
    타입스크립트
    KUIT
    HTML
    백준
    typescript
    티스토리챌린지
    javascript
    리액트
    프로그래머스
    next.js
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] ‘K번째수’ 풀어보기
상단으로

티스토리툴바