티스토리 뷰

728x90
반응형

오랜만에 코딩 테스트를 해보았다.

확실한 건 이전에 아무것도 모를 때 하는 시점보단, 기본기를 하고 난 후 많이 달라졌다.

일단 무엇을 해야할지 안다.

하지만 아직까진 검색능력이 많이 떨어져서 조금 찾는데 오래 걸렸다.

 

1. 문제 설명

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

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], 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 하도록 solution 함수를 작성한다.

 

2. 제한사항

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

 

3. 입출력 예

array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

 

4. 입출력 예 설명

[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입니다.

 

5. solution.js

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

 

6. 풀이 뒷 이야기

처음에는 이 답을 전혀 몰랐다. 그래서 일단 코드 실행으로 먼저 이해를 도왔다.

그리고 차근차근 이해를 시작하였고, 다음과 같은 코드를 나오게 만들었다.

function solution(array, commands) {
    var answer = [];
    var list = [];

    list = array.slice(1, 5);
    list = list.sort();
    answer = list[2];
    
    return answer;
}

먼저 이중 배열에 대한 이를 통해 방법을 찾았고, 이 코드를 통해 반복문을 만들었다.

여기서 힘들었던 부분은 slice를 찾는 것이 시간이 좀 걸렸다. 그리고 적용하는 법도 오래 걸렸다.

보통 sort에 대한 코드에서 sort(a, b)에 대한 것이 나왔지만... 아직은 잘 이해가 가지 않아서 일단 필자가 이해가 가는 부분으로 코드를 작성하였다.

 

이제 조금씩 어떻게 문제를 이해해야 하고, 풀어야 할지 조금씩 감이 잡혀가는 하루였다.

728x90
반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함