극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] n번째 원소부터

sundori 2023. 5. 15. 21:00

목차

     

    #1 n번째 원소부터.

    문제설명

    제한사항

    입출력 예

    #2 코드 및 알고리즘

    코드 1 -> 메소드 사용 X

    class Solution {
        public int[] solution(int[] num_list, int n) {
            n -= 1; 
            int len = num_list.length - n; // n번째 원소부터 num_list의 원소의 갯수까지
            int[] num_arr = new int[len];  // 저장할 정수 배열 생성.
            for(int i = n; i < num_list.length; i++)
                num_arr[i-n] = num_list[i];
            return num_arr;
        }
    }

    풀이:

    1. n -= 1; 하는 이유는 배열은 인덱스 0부터 시작하며 문제상에서 주어지는 n은 인덱스 1을 시작을 기준으로하기 때문이다.

    2. for문 안의 i - n도 마찬가지이다 배열의 인덱스 0번째부터 저장을 시작하기 위해서이다.

     

    코드 2 -> 메소드 사용 O

    import java.util.Arrays;
    class Solution {
        public int[] solution(int[] num_list, int n) {
            int[] num_arr = Arrays.copyOfRange(num_list, n - 1, num_list.length);
            return num_arr;
        }
    }

    #3 Arrays.copyOfRange(원본, 복사 시작 위치,  배열의 크기);

    특정 범위 배열을 복사하는데 사용하는 메소드로 원하는 범위만큼 지정하여 새로운 배열을 만드는 메소드이다.

    class FirstJava {
        public static void main(String[] args) {
            int[] num_list = {0, 1, 2, 3, 4, 5};
            int[] num_arr = Arrays.copyOfRange(num_list, from: 1, to: 6);
            // 끝나는 위치 to: 다음에 6 대신 num_list.length를 넣어도된다!
            System.out.println("원본 : " + Arrays.toString(num_list));
            System.out.println("수정본 : " + Arrays.toString(num_arr));
        }
    }
    ------------------------------------------------------------------------
    원본 : [0, 1, 2, 3, 4, 5]
    수정본 : [1, 2, 3, 4, 5]

    #4 결과 및 테스트 실행 결과

    class FirstJava {
        public static void main(String[] args) {
            int[] num_list = {5, 2, 1, 7, 5};
            int n = 2;  n -= 1;// 배열의 인덱스를 0부터 시작하기위해 1감소 밑에 코드를 보면 알 수 있다.
            int len = num_list.length - n;
            int[] num_arr = new int[len];
            for(int i = n; i < num_list.length; i++)
                num_arr[i-n] = num_list[i];
            System.out.println("원본 : " + Arrays.toString(num_list));
            System.out.println("수정본 : " + Arrays.toString(num_arr));
        }
    }
    -------------------------------------------------------------------------------------
    원본 : [5, 2, 1, 7, 5]
    수정본 : [2, 1, 7, 5]
    테스트 1 〉	통과 (0.01ms, 74.1MB)
    테스트 2 〉	통과 (0.02ms, 75.6MB)
    테스트 3 〉	통과 (0.02ms, 77.4MB)
    테스트 4 〉	통과 (0.02ms, 75.7MB)
    테스트 5 〉	통과 (0.03ms, 73.2MB)
    테스트 6 〉	통과 (0.03ms, 77.6MB)
    테스트 7 〉	통과 (0.03ms, 77.3MB)
    테스트 8 〉	통과 (0.03ms, 79.2MB)
    테스트 9 〉	통과 (0.01ms, 72.7MB)
    테스트 10 〉	통과 (0.01ms, 78.3MB)
    테스트 11 〉	통과 (0.01ms, 77.1MB)
    테스트 12 〉	통과 (0.02ms, 75.2MB)
    테스트 13 〉	통과 (0.02ms, 75.4MB)
    테스트 14 〉	통과 (0.01ms, 75.8MB)
    테스트 15 〉	통과 (0.02ms, 68.4MB)
    테스트 16 〉	통과 (0.02ms, 65.6MB)
    테스트 17 〉	통과 (0.02ms, 77.1MB)
    테스트 18 〉	통과 (0.02ms, 75.9MB)
    테스트 19 〉	통과 (0.04ms, 80.7MB)
    테스트 20 〉	통과 (0.02ms, 79MB)
    채점 결과
    정확성: 100.0
    합계: 100.0 / 100.0