[프로그래머스/181891] 순서바꾸기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
- 먼저
Array
를List
로 변환해준 뒤,addAll()
메서드를 사용해서 이어붙였다.
//시간: 0.09ms
//메모리: 86MB
import java.util.*;
class Solution {
public int[] solution(int[] num_list, int n) {
int[] secondArr = Arrays.copyOfRange(num_list, n, num_list.length); // n + 1번째 원소 부터
int[] firstArr = Arrays.copyOfRange(num_list, 0, n); // n번째 원소까지
List<Integer> secondList = new ArrayList();
for (int i = 0 ; i < secondArr.length; i++) {
secondList.add(secondArr[i]);
}
List<Integer> firstList = new ArrayList();
for (int i = 0; i < firstArr.length; i++) {
firstList.add(firstArr[i]);
}
secondList.addAll(firstList);
int[] answer = new int[num_list.length];
for (int i = 0; i < num_list.length; i++) {
answer[i] = secondList.get(i);
}
return answer;
}
}
두 번째 풀이
- 다른 사람의 풀이를 참고하였다.
- 주어진
n
으로 바로 범위를 나눠서 각각 반복문을 통해answer
배열에 넣는다. - 훨씬 더 간편한 방식이다.
//시간: 0.04ms
//메모리: 90.5MB
import java.util.*;
class Solution {
public int[] solution(int[] num_list, int n) {
int idx = 0;
int[] answer = new int[num_list.length];
for (int i = n; i < num_list.length; i++) {
answer[idx++] = num_list[i];
}
for (int i = 0; i < n; i++) {
answer[idx++] = num_list[i];
}
return answer;
}
}