반응형
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()
반응형
'⚙️ 알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 16434 드래곤 앤 던전 (0) | 2025.08.15 |
---|---|
[Python] 백준 4991 로봇 청소기, 백준 19637 IF문 좀 대신 써줘 (0) | 2025.08.07 |
[Python] 프로그래머스 광고 삽입 (0) | 2025.08.05 |
[Python] 백준 19238 스타트 택시 (0) | 2025.08.04 |
[Python] 백준 2504 괄호의 값 (0) | 2025.08.04 |