프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] n 번째 원소부터(Java)

Sigfriede 2023. 4. 30. 08:29

  문제 설명

  정수 리스트 num_list와 정수 n이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return 하도록 solution 함수를 완성해주세요.

 

  제한사항

  • 2 <= num_list의 길이 <= 30
  • 1 <= num_list의 원소 <= 9
  • 1 <= n <= num_list의 길이

 

  입출력 예

num_list n result
[2, 1, 6] 3 [6]
[5, 2, 1, 7, 5] 2 [2, 1, 7, 5]
class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[num_list.length - n + 1];
        int index = 0;
        for (int i = n - 1; i < num_list.length; i++) {
            answer[index++] = num_list[i];
        }
        return answer;
    }
}

  answer 배열을 생성합니다. num_list의 길이에서 n만큼 뺀 뒤 1을 더해줍니다. answer의 인덱스를 담을 index 변수도 생성합니다.

  for문이 n - 1부터 시작합니다. 새 배열에는 n번째 원소부터 들어가야 하기 때문에 n, 배열의 인덱스는 0번부터 시작하기 때문에 - 1을 합니다. num_list의 길이만큼 순회합니다.

  answer에 num_list의 i를 할당합니다. answer의 index가 1씩 증가하면서 배열에 num_list[i]가 차례대로 추가됩니다.

 

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

  두 코드는 동일한 결과를 반환합니다. 이번에는 Arrays 클래스의 copyOfRange 메소드를 이용했습니다. 식은 다음과 같습니다. 마찬가지로 인덱스는 0번부터 시작하므로, n - 1을 해야 올바른 결과를 도출할 수 있습니다.

 

Arrays.copyOfRange(복사할 배열, 시작 위치, 종료 위치)