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

☑️ 문제

프로그래머스 181891

☑️ 풀이

첫 번째 풀이

  • 먼저 ArrayList로 변환해준 뒤, 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;
    }
}

© 2021. All rights reserved.

yaejinkong의 블로그