• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

Section3_01. 두 배열 합치기에서 런타임 에러 미해결

23.12.05 21:57 작성 조회수 161

0

package Section3;

import java.util.Scanner;

public class Q1 {
    /**
     * 내가 구현한 방법
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] first = new int[N];
        for (int i = 0; i < N; i++) {
            first[i] = sc.nextInt();
        }

        int M = sc.nextInt();
        int[] second = new int[M];
        for (int i = 0; i < M; i++) {
            second[i] = sc.nextInt();
        }

        int total = N + M;
        int p1 = 0, p2 = 0;
        int[] third = new int[total];
        for (int i = 0; i < total; i++) {
            if (p1 < N && first[p1] < second[p2]) {
                third[i] = first[p1];
                p1++;
            } else{
                third[i] = second[p2];
                p2++;
            }
        }

        for (int i = 0; i < total; i++) {
            System.out.print(third[i] + " ");
        }
    }
}

3_01. 두 배열 합치기 문제에 대한 답안 작성코드 입니다. IDE에서 예제1 케이스에 대해서 직접 대입해보면 정상 작동하고, 정답 출력과 동일하게 출력됩니다. 하지만, 채점을 받아보면 1번 케이스에서 런타임 에러가 발생합니다. 계속 수정하고, 고민해봐도 어느 부분에서 런타임 에러가 발생하는지 모르겠어서 질문 남깁니다 !

답변 1

답변을 작성해보세요.

1

김김님의 프로필

김김

2023.12.07

첫번째 배열보다 두번째 배열이 먼저 끝나는 경우를 생각해보세여 !

p2==M이 되고

if (p1 < N && first[p1] < second[p2]) 이 if문을 돌 때 second[M]이 되므로 ArrayIndexOutOfBoundsException 예외가 발생하게 됩니다

 

ex. 이 예시로 한번 생각해보세욥

10

1 10 27 39 50 61 65 70 93 93

7

7 51 65 66 70 82 92