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

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

N차원 여행

면접 대비

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

요약
N차원 정수 격자 위의 이동을 좌표 인덱스와 부호의 목록으로 받아, 시작점과 끝점을 포함해 방문한 모든 점이 서로 다른지 판별한다.
난이도

보통10점 중 5점

유형
해시맵, 구현, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

수빈이는 여행을 좋아한다. 지구에서 더 갈 곳이 없어진 수빈이는 N차원 우주로 여행을 떠났다. 이 우주의 점은 좌표 N개로 나타내고, 각 좌표에는 1부터 N까지 인덱스가 붙어 있다.

수빈이는 원점(모든 좌표가 0인 점)에서 출발하며, 한 번 움직일 때마다 다음 두 단계를 거친다.

  • 움직일 좌표의 인덱스를 1부터 N 중에서 하나 고른다.
  • 그 좌표의 값을 1 늘린 점이나 1 줄인 점으로 이동한다. 나머지 좌표는 이동 전과 같아야 한다.

수빈이는 떠나기 전에 여행 계획을 적어 두었다. 계획에는 이동마다 고른 좌표의 인덱스와, 그 좌표를 늘리는 방향으로 갔는지 줄이는 방향으로 갔는지가 순서대로 적혀 있다.

계획을 그대로 따라갔을 때 출발점과 마지막 점을 포함한 모든 점을 한 번씩만 방문하면 1을, 같은 점을 두 번 이상 방문하면 0을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 차원의 수 NN이 주어진다. (1≤N≤1091 \le N \le 10^9)

둘째 줄에 여행 계획의 길이 MM이 주어진다. (1≤M≤501 \le M \le 50)

셋째 줄에 계획에서 고른 좌표의 인덱스 MM개가 이동 순서대로 공백으로 구분되어 주어진다. 각 인덱스는 11 이상 NN 이하이다.

넷째 줄에 길이 MM인 문자열이 주어진다. 이 문자열의 ii번째 문자가 +이면 ii번째 이동에서 좌표를 1 늘리고, -이면 1 줄인다.

출력

모든 점을 한 번씩만 방문하면 1을, 아니면 0을 출력한다.

힌트

2차원에서 인덱스 1, 2, 1, 2를 고르고 방향이 차례로 +, +, -, -이면 (0,0)→(1,0)→(1,1)→(0,1)→(0,0)(0,0) \to (1,0) \to (1,1) \to (0,1) \to (0,0)으로 움직여 (0,0)(0,0)을 두 번 방문한다.

3차원에서 인덱스 1, 2, 3, 1, 2를 고르고 방향이 차례로 +, +, +, -, -이면 (0,0,0)→(1,0,0)→(1,1,0)→(1,1,1)→(0,1,1)→(0,0,1)(0,0,0) \to (1,0,0) \to (1,1,0) \to (1,1,1) \to (0,1,1) \to (0,0,1)으로 움직여 어떤 점도 두 번 방문하지 않는다.

예제3

  1. 예제 1

    입력
    1
    1
    1
    +
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2
    4
    1 2 1 2
    ++--
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3
    5
    1 2 3 1 2
    +++--
    
    예상 출력
    1