⚙️ 알고리즘/문제풀이

[Python] 백준 1347 미로만들기

dev_zoe 2025. 8. 8. 20:08
반응형

1. 문제 - 백준 1347 미로 만들기

https://www.acmicpc.net/problem/1347

 

💡알고리즘  - 구현

 

✍🏻 막힌, 헷갈린 부분

 

1) 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다 --> 출발점을 어떻게 잡을까?

방향을 틀거나 이동하는 경우가 총 50가지이므로, 넉넉하게 배열의 크기를 100 이상으로 잡고, 중간 지점을 시작점으로 하자

 

2) 어떻게 홍준이가 이동한 길만 출력할 수 있을까?

홍준이가 이동하는 x좌표, y좌표의 최소값, 최대값을 구했을 때 최소값부터 최대값까지가 출력해야 할 범위라고 할 수 있다. 

 

 

✅ 풀이

n = int(input())
word = list(input())
x, y = 100, 100
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
d = 0
min_x, max_x, min_y, max_y = 100, 100, 100, 100
board = [["#"] * 200 for _ in range(200)]   # 처음에 '#' 로 가득한 board로 초기화하기
board[x][y] = "."    # 맨 먼저 홍준이의 위치 . 표시

for w in word:
  if w == "L":    # 방향만 바꾸기
    d = (d + 1)%4
  elif w == "R":
    d = (d - 1)%4
  else:
    x += dx[d]
    y += dy[d]
    board[x][y] = "."     # 한칸 이동했으므로 . 표시
    
    min_x = min(min_x, x)
    min_y = min(min_y, y)
    max_x = max(max_x, x)
    max_y = max(max_y, y)

for i in range(min_x, max_x + 1):     # 최소값 ~ 최대값까지만 board 출력
    for j in range(min_y, max_y + 1):
        print(board[i][j], end='')
    print()

 

 

반응형