7120 : 달팽이 행렬 탐색
•시간제한: 2.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
N × M 크기의 2차원 행렬이 주어집니다.
행렬의 시작 위치와 시작 방향이 주어질 때, 달팽이 모양(소용돌이 형태)으로 격자를 탐색하면서 방문하는 칸들의 값을 순서대로 출력하는 프로그램을 작성하십시오.
이동 중 격자 범위를 벗어나거나 이미 방문한 칸을 만나면, 이동 방향을 시계방향으로 90도 회전하여 계속 전진합니다.
[제약 조건]
• 입력되는 모든 수는 정수입니다.
행렬의 시작 위치와 시작 방향이 주어질 때, 달팽이 모양(소용돌이 형태)으로 격자를 탐색하면서 방문하는 칸들의 값을 순서대로 출력하는 프로그램을 작성하십시오.
이동 중 격자 범위를 벗어나거나 이미 방문한 칸을 만나면, 이동 방향을 시계방향으로 90도 회전하여 계속 전진합니다.
[제약 조건]
• 입력되는 모든 수는 정수입니다.
입력 설명
첫째 줄에 행렬의 세로 크기 N과 가로 크기 M이 공백으로 구분되어 주어집니다. (1 ≤ N, M ≤ 50)
둘째 줄부터 N개의 줄에 걸쳐 각 줄에 M개의 원소가 공백으로 구분되어 주어집니다. 원소는 정수 또는 알파벳 한 글자입니다.
마지막 줄에 로봇의 시작 위치
둘째 줄부터 N개의 줄에 걸쳐 각 줄에 M개의 원소가 공백으로 구분되어 주어집니다. 원소는 정수 또는 알파벳 한 글자입니다.
마지막 줄에 로봇의 시작 위치
r c와 시작 방향 d가 주어집니다. r은 행, c는 열(0-indexed)을 뜻하며, 방향 d는 U(상), D(하), L(좌), R(우) 중 하나입니다.출력 설명
달팽이 순서대로 방문한 칸들의 값을 공백으로 구분하여 한 줄에 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
3 3
1 2 3
4 5 6
7 8 9
0 0 R
출력 예시
COPY
복사되었습니다!
복사되었습니다!
1 2 3 6 9 8 7 4 5
도움
시계방향 회전 순서는
U → R → D → L → U 입니다. 2차원 방문 배열을 만들어 중복 방문을 차단하고 90도 회전 처리를 수행합니다.