Algorithm

[프로그래머스] (181891) 순서 바꾸기

31daylee 2024. 2. 19. 12:22
728x90

언어_자바

프로그래머스_순서 바꾸기

 


 

 

 

문제

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

 

 

 

입출력

입력)
num_list         n
[5,2,1,7,5]       3

출력)
result 
[7,5,5,2,1]

 

 

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[num_list.length];
        
        System.arraycopy(num_list, n, answer, 0, num_list.length-n);
        System.arraycopy(num_list, 0, answer, num_list.length-n, n);
        
        return answer;
    }
}
문제 풀이 TIP
System.arraycopy 메서드를 사용하자 !
그리고 answer 이란 새로운 배열에 담을 것이다.

1)  n이후 ) n부터 num_list의 끝까지 arraycopy를 이용하여 배열을 잘라내어 answer에 붙여넣는다.
2)  n이전 ) 인덱스 0부터 num_list-n 까지 배열을 잘라내어 answer에 붙여넣는다.

 

 

System.arraycopy(src, srcPos, dest, destPos, length);
src - 원본 배열
srcPos - 원본 배열의 복사 시작 위치
dest - 복사할 배열
destPost - 복사할 배열의 복사 시작 위치
length - 복사할 요소의 개수

 

 

 

 

 

TOP 다른 사람 풀이 

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] num_list, int n) {
        return IntStream.range(0, num_list.length).map(i -> num_list[(i + n) % num_list.length]).toArray();
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

<참고자료>

https://tosuccess.tistory.com/169

 

[자바/java] 효율적인 배열 복사 System.arrayCopy

대량의 배열 데이터를 처리해야 하는 문제를 풀다 알게 된 방법이다. 두고두고 사용할 일이 있을 것 같아서 정리하게 되었다. 흔히 배열에서 리스트로, 2차원 배열에서 1차원 배열로 구조를 변경

tosuccess.tistory.com

 

728x90