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
'Algorithm' 카테고리의 다른 글
[프로그래머스] (181894) 2의 영역 (0) | 2024.01.19 |
---|---|
[inflearn] 등수 구하기 (0) | 2024.01.18 |
[inflearn] 보이는 학생 (0) | 2024.01.18 |
[inflearn] 숫자만 추출 (0) | 2024.01.18 |
[inflearn] 뒤집은 소수 (1) | 2024.01.10 |