Today
Total
Archives
05-09 00:05
관리 메뉴

tony9402

[백준 1347] 미로 만들기 본문

알고리즘/Baekjoon Online Judge

[백준 1347] 미로 만들기

ssu_gongdoli 2022. 6. 14. 02:44
반응형

 

 

1347번: 미로 만들기

홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍

www.acmicpc.net

 

이 문제는 주어진 문자열 순으로 구현을 하면 되는 문제이다.

주어지는 문자열의 최대 길이는 50으로 101x101 크기의 배열을 만들어 (50, 50)에서 출발하여 주어진 문자열 대로 이동하고 방문한 점을 .으로 방문하지 않은 점을 #으로 출력하면 된다.

 

미로를 출력하는 범위는 .을 포함하는 가장 작은 직사각형의 크기 및 위치를 관리하면 된다.

 

import sys

def input():
    return sys.stdin.readline().rstrip()

N = int(input())
S = input()

# If +1 : Turn Right, -1 : Turn Left
Dy = (-1,0,1,0)
Dx = (0,1,0,-1)
V = [['#' for j in range(101)] for i in range(101)]
y, x, D = 50, 50, 2
ey = ex = sy = sx = 50
V[y][x] = '.'

for ch in S:
    if ch == 'L': D = (D + 3) % 4
    elif ch == 'R': D = (D + 1) % 4
    else:
        y, x = y + Dy[D], x + Dx[D]
        V[y][x] = '.'
        sy, ey, sx, ex = min(sy, y), max(ey, y), min(sx, x), max(ex, x)

for i in range(sy, ey+1): print(''.join(V[i][sx:ex+1]))
반응형

'알고리즘 > Baekjoon Online Judge' 카테고리의 다른 글

[백준 3078] 좋은 친구  (0) 2022.06.11
[백준 4991] 로봇 청소기  (0) 2022.06.11
[백준 2151] 거울 설치  (0) 2022.06.10
[백준 22949] 회전 미로 탐색  (0) 2022.06.09
[백준 5545] 최고의 피자  (0) 2022.06.07
Comments