๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 14503๋ฒˆ_๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ

Dbswnstjd 2023. 2. 10. 20:04

๋ฌธ์ œ

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

 

14503๋ฒˆ: ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ

๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฒญ์†Œํ•˜๋Š” ์˜์—ญ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๊ฐ€ ์žˆ๋Š” ์žฅ์†Œ๋Š” N×M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 14503๋ฒˆ ๋ฌธ์ œ - ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ
import sys
from collections import deque
input = sys.stdin.readline

n,m = map(int,input().split())
visited = [[0] * m for _ in range(n)]
r,c,d = map(int,input().split())
graph = [list(map(int, input().split())) for _ in range(n)]

# d => 0,3,2,1 ์ˆœ์„œ๋กœ ๋Œ์•„์•ผํ•œ๋‹ค.
dx = [-1,0,1,0]
dy = [0,1,0,-1]


# ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๊ณณ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ
visited[r][c] = 1
cnt = 1

while 1:
    flag = 0
    # 4๋ฐฉํ–ฅ ํ™•์ธ
    for _ in range(4):
        # 0,3,2,1 ์ˆœ์„œ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ์œ„ํ•œ ์‹
        nx = r + dx[(d+3)%4]
        ny = c + dy[(d+3)%4]
        # ํ•œ๋ฒˆ ๋Œ์•˜์œผ๋ฉด ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘์—…์‹œ์ž‘
        d = (d+3)%4
        if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
            if visited[nx][ny] == 0:
                visited[nx][ny] = 1
                cnt += 1
                r = nx
                c = ny
                #์ฒญ์†Œ ํ•œ ๋ฐฉํ–ฅ์ด๋ผ๋„ ํ–ˆ์œผ๋ฉด ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ
                flag = 1
                break
    if flag == 0: # 4๋ฐฉํ–ฅ ๋ชจ๋‘ ์ฒญ์†Œ๊ฐ€ ๋˜์–ด ์žˆ์„ ๋•Œ,
        if graph[r-dx[d]][c-dy[d]] == 1: #ํ›„์ง„ํ–ˆ๋Š”๋ฐ ๋ฒฝ
            print(cnt)
            break
        else:
            r,c = r-dx[d],c-dy[d]

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ  ๋ณด๋‹ค๋Š” ๋ฌธ์ œ์— ๋‚˜์˜จ ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ ๊ทธ๋ƒฅ ๊ตฌํ˜„์„ ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

๊ทผ๋ฐ ์ฒ˜์Œ ํ’€์–ด๋ณด๋Š” ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•˜๊ณ  ํšŒ์ „ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ—ท๊ฐˆ๋ฆฌ๊ณ  ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•˜๋Š๋ผ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์†Œ์š”๋๋‹ค. 

๋‹ค์‹œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค. 

 

 

์ถœ์ฒ˜ : https://resilient-923.tistory.com/164