[프로그래머스 : 알고리즘 코딩테스트] Level.1 K번째수

AREUM·2023년 1월 31일
0

코딩테스트

목록 보기
21/22
post-thumbnail

문제 설명

매개변수 : array => 자연수를 담은 배열, commands => 배열안에 배열안에 자연수

배열 arrayi번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때,
k번째에 있는 수를 구한다.

예를 들어,
배열인 array가 [ 1, 5, 2, 6, 3, 7, 4 ]
commands인 배열안에 첫번째 원소인 2, 5, 3이 i=2, j=5, k=3이라면,

  1. array의 2번째부터 5번째까지 자르면 [ 5, 2, 6, 3 ]이다.
  2. 1에서 나온 배열을 정렬하면 [ 2, 3, 5, 6 ]이다.
  3. 2에서 나온 배열 3번째 숫자는 5이다.

배열 array , [ i, j, k ]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때,
commands의 모든 원소에대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return해라.

제한사항

  • array의 길이는 1이상 100이하이다.
  • array의 각 원소는 1이상 100이하이다.
  • commmands의 길이는 1이상 50이하이다.
  • commmands의 각 원소는 길이가 3이다.

입출력 예 or 설명

  • [ 1, 5, 2, 6, 3, 7, 4 ]를 2번째부터 5번째까지 자른 후 정렬합니다. [ 2, 3, 5, 6 ]의 세 번째 숫자는 5입니다.
  • [ 1, 5, 2, 6, 3, 7, 4 ]를 4번째부터 4번째까지 자른 후 정렬합니다. [ 6 ]의 첫 번째 숫자는 6입니다.
  • [ 1, 5, 2, 6, 3, 7, 4 ]를 1번째부터 7번째까지 자릅니다. [ 1, 2, 3, 4, 5, 6, 7 ]의 세 번째 숫자는 3입니다.

문제 풀이 or 설명

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

문제 설명
1. 배열안에 배열안에 들어있는 원소를 꺼내기 위해 for문을 사용해 commands의 길이만큼 반복문을 돌려주었다.
2. console.log를 찍어 commands의 값들을 확인했다.
3. arr라는 변수를 만들어 매개변수 array에 첫번째로 해 줄 잘라주기 위해 slice메소드를 사용해 값을 잘라주었다.
( index가 0부터 시작하기에 첫번째 원소는 -1를 해주었다. )
4. 두번째로는 정렬을 하기 위해 sort메소드를 사용했다.
5. 그리고 세번째 원소값으로 값을 추출해오기 위해 at메소드를 사용하였다.
6. 빈 배열인 answer변수에 push메소드를 사용해 arr변수를 배열안에 추가 하고 return해 주었다.


느낀점
1. sort를 사용할 때 그냥 sort()로만 적어주었다.
출력했을 때는 통과가 나왔지만, 제출을 했을 때는 탈락이 나왔다.
그래서 sort()에 오름차순 정렬해주는 공식 반환값을 넣어주었다.

2. 마지막 at라는 메소드는 원래 indexOf, find, filter 여러 가지를 생각했지만, 값을 가져오기에 적절하다 생각한 메소드가 at라는 생각에 at메소드를 사용했다.
.at() 메소드

3. 문제의 요점들을 파악하고 이해한 후, 공책 또는 머릿속 또는 주석으로 순서도를 정해놓고 코드를 적어보자.
처음에는 array매개변수를 for문으로 돌리고 commands매개변수를 이중 for문을 돌렸다.
아니라는 것을 깨닫고 문제를 다시한번 더 보고 이해하고 코드를 쳐나가기 시작했다.

profile
어깨빵으로 부딪혀보는 개발끄적이는 양씨 인간

0개의 댓글