TIL 2023-01-28 항해99 D+20

황원준·2023년 1월 28일

hanghae99

목록 보기
19/24

1. 문제점


페어프로그래밍으로 진행한 코딩테스트 문제였다. 이 문제를 풀때 드라이버로써 네비게이터의 방향 제시하면 그에 맞는 방법을 찾고 내가 생각한 코드와 비교하면서 소통을 하면서 해결법을 찾아 내는 페어프로그래밍이었다. 처음 문제를 보고 일단 문제에 대한 이해도가 너무 없었다. 입출력 예와 입출력 예 설명등을 보면서 세울 개념이나 메서드들을 생각해냈어야 하는데 보는데 답이 안나왔다.

2. 시도 해본 것들

일단은 먼저 네비게이터인 팀원에 도움으로 문제 풀이에 대한 방향을 먼저 잡았다. 2차원 배열이지만 이중 for문으로 접근을 하지 않았고, 주어진 배열에 길이만큼 답을 추출한 배열은 만들어줬다.
그리고 문제설명에서 i는 a, j는 b, k는 c로 정해줘서 문제풀이를 시작했는데, 내가 뇌정지가 왔다. 우선, 2차원 배열에 대한 코딩테스트 경험도 없을 뿐더러 2차원 배열에 대한 정확한 개념이 없던 것이라 문제 해결하는데 시간이 걸렸다. 분명, 네비게이터인 방향성을 너무 잘 잡아 주셨는데 내가 이해를 못했다. 우선 변수 a, b, c 설정 이며 문제도 이해가 안 되는 것이다. 그러다 보니 계속 방향을 못잡고 맴돌고 있었다.

3. 해결법

다시 차분하게 네비게이터인 팀원분의 도움으로 이 문제를 해결하기도 했고, 문제도 이해를 했다.

import java.util.Arrays;

class Solution {
    public static int[] solution(int[] array, int[][] commands) {

        int[] answer = new int[commands.length]; // {0, 0, 0}

        for (int i = 0; i < commands.length; i++) {

            int a = commands[i][0];
            int b = commands[i][1];
            int c = commands[i][2];

            int[] arr1 = Arrays.copyOfRange(array, a-1, b);

            Arrays.sort(arr1); // 2,3,5,6

            answer[i] = arr1[c - 1]; // c =3 , -> 2
        }

        return answer;

    }
    
}

4. 알게 된 점

  1. copyOfRange(arr, start_index, end_index)
    이 메소드는 첫 번째 매개변수로 복사할 원본 배열을 받고, 두 번째 매개변수로 시작 인덱스, 세 번째 매개변수로 마지막 복사될 배열 인덱스+1을 받아서 원본 배열과 같은 타입의 복사된 새로운 배열을 반환해준다.

  2. 2차원 배열의 응용문제 풀이 접근법

  3. 나 자신이 배열과 2차원 배열에 대한 이해도 부족 - 꼭 완벽 숙달 해내겠다.

profile
좋은 개발자가 되기 위해 노력 하는 개린이

0개의 댓글