https://school.programmers.co.kr/learn/courses/30/lessons/87694
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ง์ฌ๊ฐํ์ด 1๊ฐ์ผ ๋๋ ์ด๋ ต์ง ์๊ฒ ๊ตฌ์ฌํ๋๋ฐ
์ผ๋จ ์ขํ์ถ์ 2๋ฐฐ๋ก ๋๋ฆด ์๊ฐ์ ๋ชปํ๊ณ ....
ํ ์นธ์ง๋ฆฌ ์ ๋งคํ ์ ์ด์ด ๋ ์นธ ์ด์์ ๊ตฌ์กฐ๋ก ํด์ง๋ฉด์
๊ฒฝ๊ณ/๋ด๋ถ/๋ฐ๊นฅ์ด ๋ถ๋ช ํ๊ฒ ๋๋จ
-> ๋๋ฌด ์กฐ๋ฐํด์ ๊ตฌ๋ถ์ด ์ ๋๋ ๊ฑธ ์กฐ๊ธ ํ๋ํด์ ๊ธฐํ ๊ตฌ์กฐ ๋ณด์กด
๊ธธ์ ํ์ํ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค ์๊ฐ์ ํ๋๋ฐ ์ขํ์ถ ๋๋ฌธ์ ๊ตฌํ์ด ์๋์..
๋์ถฉ ๋จธ๋ฆฌ์์๋ ์์์ง๋ง ๋๋ฌด ์ด๋ ค์ ์ ํ..
bfs ๊ตฌํ์ ์ด๋ ต์ง ์์๋๋ฐ rectangle_map ๊ตฌํ๋๊ฒ hell
from collections import deque
def bfs(rectangle, rectangle_map, characterX, characterY, itemX, itemY):
queue = deque([(characterX, characterY, 0)])
rectangle_map[characterX][characterY] = 2
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
while queue:
x, y, cnt = queue.popleft()
if x == itemX and y == itemY:
return cnt
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < 102 and 0 <= ny < 102:
if rectangle_map[nx][ny] == 1:
queue.append((nx, ny, cnt+1))
rectangle_map[nx][ny] = 2
def solution(rectangle, characterX, characterY, itemX, itemY):
# ํ
๋๋ฆฌ๊ฐ ๋ช
ํํ์ง ์์์ 2๋ฐฐ๋ก ์ขํ ํ์ฅํ ๋ค์ ๋์ค์ 1/2 ๊ณฑํด์ ์ค์ด๊ธฐ
# rectangle_map์ ํตํด์ ํ
๋๋ฆฌ ์ ์ํ๊ธฐ
rectangle_map = [[0]*51*2 for _ in range(51*2)]
characterX = 2*characterX
characterY = 2*characterY
itemX = 2*itemX
itemY = 2*itemY
# ์ง์ฌ๊ฐํ ์์น ํ๊ธฐ
for rec in rectangle:
x1, y1, x2, y2 = rec
x1, y1, x2, y2 = 2*x1, 2*y1, 2*x2, 2*y2
for i in range(x1, x2+1):
for j in range(y1, y2+1):
rectangle_map[i][j] = 1
# ๋ด๋ถ ์ง์ฐ๊ธฐ
for rec in rectangle:
x1, y1, x2, y2 = rec
x1, y1, x2, y2 = 2*x1, 2*y1, 2*x2, 2*y2
for i in range(x1+1, x2):
for j in range(y1+1, y2):
rectangle_map[i][j] = 0
answer = bfs(rectangle, rectangle_map, characterX, characterY, itemX, itemY)
return answer//2'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ๋ก๊ทธ๋๋จธ์ค Lv2 | ์ ๋ ฌ | H-index (0) | 2026.04.03 |
|---|---|
| ํ๋ก๊ทธ๋๋จธ์ค Lv3 | dfs/bfs | ํผ์ฆ ์กฐ๊ฐ ์ฑ์ฐ๊ธฐ (0) | 2026.04.02 |
| ํ๋ก๊ทธ๋๋จธ์ค Lv2 | dfs/bfs | ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2026.04.01 |
| ํ๋ก๊ทธ๋๋จธ์ค Lv1 | ์์ ํ์ | ๋ชจ์๊ณ ์ฌ (0) | 2026.03.31 |
| ํ๋ก๊ทธ๋๋จธ์ค Lv1 | ์์ ํ์ | ์ต์์ง์ฌ๊ฐํ (0) | 2026.03.31 |