문제
1347번 - 미로 만들기
문제 해결 과정
- 바라보는 방향을 어떻게 설정할까?
- 초기(0,0)에서 움직이고 바라보는 방향에서 한 칸 이동할 때 미리 정의된 dx,dy를 더해서 이동
graph
는 홍준이가 이동한 좌표 값들이 들어감
- 지도를 그리기 위한 준비
graph
의 가장 작은 값과 가장 큰 값의 차이로 행과 열의 크기 구하기
graph
는 음수값이 있으니까 가장 작은 값의 절대값을 더해줘서 양수로 만든다 -> 가장 왼쪽이고 가장 위에 있는 (가장 작은) 값을 (0,0) 쪽으로
시행착오
- 값들이 마이너스일때 양수로 바꾸는 과정이 헷갈림 x축,y축으로 생각하여 값을 더해줘서 이동한다고 생각하자
map = [[False] *m for _ in range(n)]
이중배열 까먹지 말자
- 계속 인덱스에러가 났음
map = [[False] *n for _ in range(m)]
을 map = [[False] *m for _ in range(n)]
으로 수정,, 행과열 주의하자
import sys
length = int(sys.stdin.readline())
note = list(sys.stdin.readline().rstrip())
dx = [0,1,0,-1]
dy = [1,0,-1,0]
x,y,direction= 0,0,1
graph = [[x,y]]
for i in note:
if i == 'R':
direction = (direction + 1) % 4
if i == 'L':
direction = (direction - 1) % 4
if i == 'F':
x = x + dx[direction]
y = y + dy[direction]
graph.append([x,y])
n = max(graph)[0] - min(graph)[0] + 1
m = max(graph, key = lambda x:x[1])[1] - min(graph, key = lambda x:x[1])[1] + 1
min_x = min(graph, key = lambda x:x[0])[0]
min_y = min(graph, key = lambda x:x[1])[1]
for i in graph:
i[0] = i[0] + abs(min_x)
i[1] = i[1] + abs(min_y)
map = [[False] *m for _ in range(n)]
for i in graph:
if map[i[0]][i[1]] == False:
map[i[0]][i[1]] = '.'
for i in map:
for j in range(m):
if i[j] == False:
i[j] = '#'
for i in map:
for j in range(len(i)):
print(i[j],end="")
print("")