만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

부당한 퍼즐

면접 대비

시간 제한2초메모리 제한256 MB

요약
1부터 n까지의 두 순열이 주어질 때, 순환 회전과 뒤집기만으로 첫 순열을 두 번째 순열로 만들 수 있는지 판정해 good puzzle 또는 bad puzzle을 출력한다.
난이도

보통10점 중 6점

유형
문자열, 문자열 매칭, 투 포인터, 구현
정답자
아직 제출이 없습니다

문제

현욱은 퍼즐 게임을 좋아한다. 어느 날 친구가 간단한 플래시 퍼즐 게임을 하나 추천해 줬는데, 규칙은 다음과 같다.

  1. 플레이어는 1부터 nn까지의 수가 한 번씩 나타나는 수열 하나를 들고 시작한다.

  2. 1부터 nn까지의 수가 한 번씩 나타나는 또 다른 수열이 목표로 주어진다. 처음 수열을 적당히 변형해서 목표 수열과 똑같이 만들어야 한다.

  3. 플레이어가 수열에 쓸 수 있는 동작은 두 가지이고, 각 동작은 몇 번이든 수행할 수 있다.

    • 뒤집기: 지금 수열의 순서를 거꾸로 뒤집는다. 예를 들어 1 2 3 4 5는 5 4 3 2 1이 된다.
    • 밀기: 지금 수열을 왼쪽이나 오른쪽으로 한 칸 민다. 끝에서 밀려난 수는 반대쪽 끝으로 들어간다. 예를 들어 1 2 3 4 5를 오른쪽으로 한 칸 밀면 5 1 2 3 4가 된다.

규칙은 아주 쉬운데도 퍼즐이 도무지 풀리지 않아서 한참 고민하던 현욱은, 다시 비교해 보고 나서야 이 퍼즐이 주어진 동작만으로는 목표 수열을 절대 만들 수 없는 퍼즐이라는 사실을 알아차렸다.

화가 난 현욱은 퍼즐 제작자에게 따지려고, 주어진 퍼즐이 올바른 퍼즐인지 아닌지 판정하는 프로그램을 만들기로 했다. 현욱을 도와 괘씸한 제작자를 응징해 주자.

입력

첫째 줄에 nn이 주어진다. (1≤n≤1061 \le n \le 10^6)

둘째 줄에 처음 수열이 주어진다. 1부터 nn까지의 수가 한 번씩 공백으로 구분되어 나온다.

셋째 줄에 목표 수열이 같은 형식으로 주어진다.

출력

주어진 두 동작만으로 처음 수열을 목표 수열로 만들 수 있으면 good puzzle을, 만들 수 없으면 bad puzzle을 출력한다.

예제7

  1. 예제 1

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

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

    입력
    1
    1
    1
    
    예상 출력
    good puzzle
    
  4. 예제 4

    입력
    2
    1 2
    2 1
    
    예상 출력
    good puzzle
    
  5. 예제 5

    입력
    3
    1 2 3
    1 3 2
    
    예상 출력
    good puzzle
    
  6. 예제 6

    입력
    6
    4 1 6 2 5 3
    4 1 6 2 5 3
    
    예상 출력
    good puzzle
    
  7. 예제 7

    입력
    7
    2 5 1 7 3 6 4
    3 6 4 2 5 1 7
    
    예상 출력
    good puzzle