코드업 1405

박은빈·2022년 10월 16일

코딩

목록 보기
5/19

코드업 1405번 문제

배열이 주어지면 배열의 위치를 한칸씩 옮겨서 출력
ex) {1,2,3}
1 2 3 4
2 3 4 1
3 4 2 1
4 1 2 3

해결방식

  1. 배열을 새로 만들기에는 메모리와 시간이 너무 소모되기때문에 왼쪽으로 밀리다가 뒤로가는 배열을 하나의 새로운 배열로 보았다
  2. 첫번째 배열은 0번째부터 하나씩 줄어든다
  3. 두번째 배열은 무조건 0번째부터 시작하지만 끝나는 지점이 1씩 늘어난다

코드

public class CodeUp_1405 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        int[] arr = new int[num];

		//배열 입력
        for(int i=0; i<num; i++) {
            arr[i] = sc.nextInt();
        }

		//배열 출력
        for(int i=0; i<num; i++) {
            for(int k=i; k<num; k++) {
                System.out.print(arr[k] + " ");
            }
            for(int j=0; j<i; j++) {
                System.out.print(arr[j] + " ");
            }
            System.out.println();
        }
    }
}

풀이중 나온 문제

계속 실행중 에러(java.lang.ArrayIndexOutOfBoundsException: 1)가 떴다
이유를 찾아보니 첫번째 for문에서 범위를 num이 아닌 5로 지정해놓았었다

왜 5로 지정을 했었냐면.. 예시정답에서 행이 5칸이어서 일단 5로 지정해놓았기 때문이었다

예시만 생각하고 다른 케이스가 많다는걸 인지하지 못해서 거의 20분동안 에러를 찾았었다.

항상 테스트 케이스는 유동적으로 나오기때문에 조심하자

profile
안녕하세요

0개의 댓글