아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

알고리즘 수업 - 삽입 정렬 6

면접 대비

시간 제한3초메모리 제한512 MB

요약
배열 A를 오름차순으로 삽입 정렬할 때 정렬 도중 A가 배열 B와 같아지는 순간이 있는지 판단합니다.
난이도

보통10점 중 6점

유형
배열, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

서준이는 오늘도 삽입 정렬 수업의 조교를 맡고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제로 확인해 보자.

NN개의 서로 다른 양의 정수가 저장된 배열 AA가 있다. 삽입 정렬로 AA를 오름차순 정렬할 때, 정렬 과정에서 AA가 배열 BB와 같아지는 경우가 발생하는지 확인해 보자. 초기 상태의 AA도 정렬 과정에서 나올 수 있는 상태로 본다.

NN이 매우 커서 시간 초과를 걱정하고 있는 서준이를 도와주자.

크기가 NN인 배열에 대한 삽입 정렬 의사 코드는 다음과 같다.

insertion_sort(A[1..N]) { # A[1..N]을 오름차순 정렬한다.
    for i <- 2 to N {
        loc = i - 1;
        newItem = A[i];

        # 이 지점에서 A[1..i-1]은 이미 정렬되어 있는 상태
        while (1 ≤ loc and newItem < A[loc]) {
            A[loc + 1] <- A[loc];
            loc--;
        }
        if (loc + 1 != i) then A[loc + 1] = newItem;
    }
}

입력

첫째 줄에 배열 AA, BB의 크기 NN(5≤N≤5000005 \le N \le 500000)이 주어진다.

다음 줄에 서로 다른 배열 AA의 원소 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (1≤Ai≤1091 \le A_i \le 10^9)

다음 줄에 배열 BB의 원소 B1,B2,…,BNB_1, B_2, \ldots, B_N이 주어진다. (1≤Bi≤1091 \le B_i \le 10^9)

출력

삽입 정렬로 배열 AA를 오름차순 정렬하는 과정에서 배열 AA가 배열 BB와 같은 경우가 발생하면 1, 아니면 0을 출력한다.

예제2

  1. 예제 1

    입력
    5
    4 5 1 3 2
    1 3 4 5 5
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5
    4 5 1 3 2
    1 3 2 4 5
    
    예상 출력
    0