[programmers] n 번째 원소부터 - 181892

iy·2024년 1월 1일

[level unrated] n 번째 원소부터 - 181892

문제 링크

구분

코딩테스트 연습 > 코딩 기초 트레이닝

문제 설명

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


제한사항
  • 2 ≤ num_list의 길이 ≤ 30
  • 1 ≤ num_list의 원소 ≤ 9
  • 1 ≤ nnum_list의 길이

입출력 예
num_list n result
[2, 1, 6] 3 [6]
[5, 2, 1, 7, 5] 2 [2, 1, 7, 5]

입출력 예 설명

입출력 예 #1

  • [2, 1, 6]의 세 번째 원소부터 마지막 원소까지의 모든 원소는 [6]입니다.

입출력 예 #2

  • [5, 2, 1, 7, 5]의 두 번째 원소부터 마지막 원소까지의 모든 원소는 [2, 1, 7, 5]입니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges


🐾 내가 푼 풀이

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[num_list.length -n+1];
        for(int i = n-1; i < num_list.length;i++){
            answer[i -n+1] = num_list[i];
        }
        return answer;
    }
}

반복문으로 범위를 정해서 값을 대입해줬다.

👀 다른 사람 풀이

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

Arrays 클래스의 copyOfRange() 메소드를 이용해 배열을 원하는 만큼 복사해주었다.

  • copyOf() 메소드
// 깊은 복사 메서드
// 2. Arrays.copyOf()메서드
int[] a ={1,2,3,4};
int[] b = Arrays.copyOf(a,a.length);// 배열과 함께 length값도 같이 넣어줌

copyOf메소드는 주소값만 복사하는 것이 아니라 값과 주소값을 함께 복사해 복사값이 복사된 배열에 영향을 미치지 않는다.
이때 copyOfRange(복사할 배열, 복사 시작할 위치, 복사 끝 위치)를 이용하면 원하는 범위를 지정해 복사를 할 수 있다.


💡 메소드를 많이 활용해 봐야겠다. 많이 찾고 사용해야 익숙해질 거 같다.

1개의 댓글

comment-user-thumbnail
2024년 1월 2일

멋져요 언니!!

답글 달기