โ๋ฌธ์
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
โ๐ปํ์ด
์ด ๋ฌธ์ ๋ BFS๋ฌธ์ ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํ๋ฅผ ํ์ฉํด์ ๋ฏธ๋ก๋ฅผ ์ํ์ข์ฐ๋ก ์ดํผ๋ฉฐ ์ด๋ ๊ฐ๋ฅํ ์ขํ๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
๋ฏธ๋ก ์์น๊ฐ 0์ด๋ 3์ด๋ฉด ํ์ ์ง์ด๋ฃ๊ณ ํ์์ ๊บผ๋ธ ํ์ฌ ์์น๊ฐ 3์ธ ๊ฒฝ์ฐ์๋ 1์ ํ๊ธฐํ๋ฉฐ ๋์ฐฉ์ง ๋๋ฌ์ด ๊ฐ๋ฅํจ์ ํ์ํ๊ณ ์ข
๋ฃํ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ while๋ฌธ์ break์ ๋ง๋์ ํ์ถํ ๊ฒ์ด ์๋๋ผ๋ฉด else์ ๊ฑธ๋ ค์ 0์ ํ๊ธฐํ ๊ฒ์ด๋ค.
๐ป์ฝ๋
from collections import deque
for tc in range(10):
case = int(input())
board = [list(input()) for _ in range(16)]
visit = [[False for _ in range(16)] for _ in range(16)]
q = deque()
q.append((1, 1))
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
while q:
cy, cx = q.popleft()
if board[cy][cx] == "3":
print(f"#{case} 1")
break
for i in range(4):
ny, nx = cy + dy[i], cx + dx[i]
if 0 < ny < 16 and 0 < nx < 16:
if not visit[ny][nx]:
if board[ny][nx] == "0" or board[ny][nx] == "3":
visit[ny][nx] = True
q.append((ny, nx))
else:
print(f"#{case} 0")
๐ํ๊ธฐ
์ค๋๋ง์ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ ์์ ๋ถ๋ถ์ด ๋ง๋ค. ์์์ ๋ฏธ๋ก๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ ์ฒ์์๋ list(map(int, input().split()))์ผ๋ก ํ๋๋ฐ ์ด๋ฌ๋ฉด ํ์ค์ ํต์ผ๋ก ์ซ์๋ก ์ธ์ํ๊ฒ ๋๋ค. input์ผ๋ก ๋ฐ์ ๋๋ str๋ก ์ธ์ํ๋ฏ๋ก list(input())๋ง ํ๋ฉด ๋ฐ๋ก ํ ๊ธ์์ฉ ๋๋ ์ง๋ ๊ฒ์ด ๊ธฐ์ต๋ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์/Python - Lv.1 (2) | 2025.07.07 |
---|---|
[SWEA] 1218. ๊ดํธ ์ง์ง๊ธฐ/Python - D4 (0) | 2025.07.05 |
[SWEA] 1247. ์ต์ ๊ฒฝ๋ก/Python - D5 (0) | 2025.06.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํฌํธ๋ฆฌ/Python - Lv.2 (0) | 2025.06.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด/Python - Lv.2 (1) | 2025.06.21 |