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

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

Wiggle Walk

메모리 제한1024 MB

요약
로봇이 이미 방문한 칸을 지나쳐 새 칸에 도착할 때까지 같은 방향으로 미끄러진다. N개의 명령을 모두 수행한 뒤 로봇이 멈추는 칸을 구한다.
난이도

보통10점 중 7점

유형
시뮬레이션, 유니온 파인드, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

Banny는 방금 새 프로그래밍 가능 로봇을 샀다. 코딩 실력을 시험해 보려는 Banny는 로봇을 R개의 행(북쪽에서 남쪽으로 1번부터 R번까지)과 C개의 열(서쪽에서 동쪽으로 1번부터 C번까지)로 이루어진 격자에 놓았다. r행 c열의 칸은 (r, c)로 나타낸다.

처음에 로봇은 (SR, SC) 칸에서 출발한다. Banny는 로봇에게 N개의 명령을 내린다. 각 명령은 N, S, E, W 중 하나이며, 로봇에게 각각 북쪽, 남쪽, 동쪽, 서쪽으로 한 칸 이동하라고 지시한다.

로봇이 이전에 있던 적이 있는 칸으로 이동하면, 로봇은 있었던 적이 없는 칸에 도달할 때까지 같은 방향으로 계속 이동한다. Banny는 로봇이 격자 밖으로 나가게 하는 명령은 내리지 않는다.

N개의 명령을 모두 수행한 뒤 로봇이 어느 칸에서 멈추는지 구할 수 있는가?

입력

입력의 첫 줄에는 테스트 케이스의 수 T가 주어진다. T개의 테스트 케이스가 이어진다. 각 테스트 케이스의 첫 줄에는 다섯 개의 정수 N, R, C, SR, SC가 주어지며, 각각 명령의 수, 행의 수, 열의 수, 로봇의 시작 행, 시작 열이다.

그다음 줄에는 N개의 문자로 이루어진 문자열 하나가 주어진다. 이 문자열의 i번째 문자는 Banny가 로봇에게 내리는 i번째 명령이다(위에서 설명한 대로 N, S, E, W 중 하나).

출력

각 테스트 케이스마다 Case #x: r c 형식의 한 줄을 출력한다. 여기서 x는 테스트 케이스 번호(1부터 시작), r은 로봇이 멈추는 행, c는 로봇이 멈추는 열이다.

제한

  • 1 ≤ T ≤ 100.
  • 1 ≤ R ≤ 5 × 10^4.
  • 1 ≤ C ≤ 5 × 10^4.
  • 1 ≤ SR ≤ R.
  • 1 ≤ SC ≤ C.
  • 명령은 로봇을 격자 밖으로 나가게 하지 않는다.

힌트

Sample Case #1은 왼쪽 위 그림, Sample Case #2는 오른쪽 위 그림, Sample Case #3은 아래쪽 그림에 대응한다. 각 그림에서 노란 칸은 로봇이 출발하는 칸이고, 초록 칸은 로봇이 멈추는 칸이다.

예제1

  1. 예제 1

    입력
    3
    5 3 6 2 3
    EEWNS
    4 3 3 1 1
    SESE
    11 5 8 3 4
    NEESSWWNESE
    
    예상 출력
    Case #1: 3 2
    Case #2: 3 3
    Case #3: 3 7