[programmers] 순서 바꾸기 - Java

정수 리스트 num_list를 n번째 원소 이후의 원소들과 n번째까지의 원소들로 나눈 후, n번째 원소 이후의 원소들을 n번째까지의 원소들 앞에 붙인 리스트를 반환하는 문제입니다. 주어진 solution 함수는 이를 구현하고 있으며, Arrays.copyOfRange() 메소드와 System.arraycopy() 메소드를 활용하여 두 배열을 합칠 수 있습니다.
Jan 12, 2024
[programmers] 순서 바꾸기 - Java

문제 설명

정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.

제한사항

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

입출력 예

num_list
n
result
[2, 1, 6]
1
[1, 6, 2]
[5, 2, 1, 7, 5]
3
[7, 5, 5, 2, 1]

입출력 예 설명

입출력 예 #1
  • [2, 1, 6]에서 첫 번째 이후의 원소는 [1, 6]이고 첫 번째까지의 원소는 [2]입니다. 두 리스트를 이어 붙이면 [1, 6, 2]가 됩니다.
입출력 예 #2
  • [5, 2, 1, 7, 5]에서 세 번째 이후의 원소는 [7, 5]이고 세 번째까지의 원소는 [5, 2, 1]입니다. 두 리스트를 이어 붙이면 [7, 5, 5, 2, 1]가 됩니다.

solution.java

import java.util.*; class Solution { public int[] solution(int[] num_list, int n) { int[] arr1 = {}; int[] arr2 = {}; arr1 = Arrays.copyOfRange(num_list, n, num_list.length); arr2 = Arrays.copyOfRange(num_list, 0, n); int[] arr3 = Arrays.copyOfRange(arr1, 0, arr1.length + arr2.length); System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length); return arr3; } }
 

핵심 키워드

  • System.arraycopy() 메소드는 자바에서 메소드를 복사할 때 사용한다. 첫 번째 파라미터는 원본 배열, 두 번째 파라미터는 원본 배열에서의 복사 시작 인덱스, 세 번째 파라미터는 복사할 배열, 네 번째 파라미터는 복사할 배열의 복사 시작 인덱스, 다섯 번째 파라미터는 복사할 요소의 개수다.
 

결론!

해당 문제를 풀면서 코드를 작성하다가 두 배열을 합치는 데에 어려움을 겪었고, 이를Arrays.copyOfRange() 메소드와 System.arraycopy() 메소드의 활용을 통해 해결할 수 있었다.
 
Share article
RSSPowered by inblog