코딩테스트 연습 > 코딩 기초 트레이닝
정수 리스트 num_list와 정수 n이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.
num_list의 길이 ≤ 30num_list의 원소 ≤ 9n ≤ num_list의 길이| num_list | n | result |
|---|---|---|
| [2, 1, 6] | 3 | [6] |
| [5, 2, 1, 7, 5] | 2 | [2, 1, 7, 5] |
입출력 예 #1
입출력 예 #2
출처: 프로그래머스 코딩 테스트 연습, 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() 메소드를 이용해 배열을 원하는 만큼 복사해주었다.
// 깊은 복사 메서드
// 2. Arrays.copyOf()메서드
int[] a ={1,2,3,4};
int[] b = Arrays.copyOf(a,a.length);// 배열과 함께 length값도 같이 넣어줌
copyOf메소드는 주소값만 복사하는 것이 아니라 값과 주소값을 함께 복사해 복사값이 복사된 배열에 영향을 미치지 않는다.
이때 copyOfRange(복사할 배열, 복사 시작할 위치, 복사 끝 위치)를 이용하면 원하는 범위를 지정해 복사를 할 수 있다.
💡 메소드를 많이 활용해 봐야겠다. 많이 찾고 사용해야 익숙해질 거 같다.
멋져요 언니!!