와! 되게 재밌는 문제였다. 미로를 탈출하는게 아니고 이동값을 보고 미로를 직접 만드는 문제라니
import sys
input = sys.stdin.readline
delta = [(1, 0), (0, -1), (-1, 0), (0, 1)]
N = int(input())
command = input().rstrip()
MAP = [["."]]
def addMap():
global MAP, i, j
if now == 0: # 아래
if i == len(MAP):
block = ["#"] * len(MAP[0])
block[j] = "."
MAP.append(block)
elif now == 1: # 왼쪽
if j == -1:
j = 0
for a in range(len(MAP)):
MAP[a] = ["#"] + MAP[a]
elif now == 2: # 위쪽:
if i == -1:
i = 0
block = ["#"] * len(MAP[0])
MAP = [block] + MAP
else: # 오른쪽
if j == len(MAP[0]):
for a in range(len(MAP)):
MAP[a].append("#")
MAP[i][j] = "."
now = 0
i, j = 0, 0
for c in command:
if c == "R":
now = (now + 1) % 4
elif c == "L":
now -= 1
if now == -1:
now = 3
else:
i += delta[now][0]
j += delta[now][1]
addMap()
for i in range(len(MAP)):
for j in range(len(MAP[0])):
print(MAP[i][j], end = "")
print()
now 변수에 내 방향을 저장해주고
각 방향으로 이동시에 인덱스를 벗어난 이동이라면 맵이 확장됨을 의미하므로 적절하게 미로를 확장시켜 풀었다.
명령어 횟수가 최대 50이라서 시간을 생각하지 않았지만 횟수가 커진다면 미로를 확장하는데 있어 효율을 좀 생각해봐야될거 같다.