프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 순서 바꾸기(Java)

Sigfriede 2023. 5. 22. 01:00

  문제 설명

  정수 리스트 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]
class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[num_list.length];
        int index = 0;
        for (int i = n; i < num_list.length; i++) {
            answer[index++] = num_list[i];
        }
        for (int i = 0; i < n; i++) {
            answer[index++] = num_list[i];
        }
        return answer;
    }
}

  answer 배열을 생성합니다. num_list에서 원소 간 위치만 변경되는 것이므로 크기는 num_list와 동일합니다.

  index 변수를 생성합니다. 배열에 원소를 삽입할 때, answer에 사용할 변수입니다.

  첫 번째 for문이 n부터 num_list의 길이만큼 순회합니다. 이는 n 번째 원소 이후의 원소를 순회합니다. answer의 index 번째 원소 자리에 num_list의 i 번째 원소를 차례대로 삽입합니다.

  두 번째 for문이 0부터 n까지 순회합니다. 이는 n번째까지의 원소를 순회합니다. 이번에도 answer의 index 번째 원소 자리에 num_list의 i 번째 원소를 삽입합니다. index는 앞서 증가한 값이 유지되고 있으므로, answer 배열에 연이어 원소가 채워질 것입니다.