hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16933๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ 3
๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16933๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ 3

2022. 1. 5. 21:37
728x90

๋ฌธ์ œ

 

ํ’€์ด

n, m, k = map(int, input().split())
graph = [input().rstrip() for _ in range(n)]
visited = [[k + 1 for _ in range(m)] for _ in range(n)]
visited[0][0] = 0

 

visited๋Š” ๋„์ฐฉํ–ˆ์„ ๋•Œ ๋ฒฝ์„ ๋ถ€์ˆœ ํšŸ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค.

์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ ๋ฒฝ์„ ์ตœ๋Œ€๋กœ ๋ถ€์ˆ  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค.

 

๋งŒ์•ฝ (x, y) ์ขŒํ‘œ์—์„œ ๋ฒฝ์„ ๋ถ€์ˆœ ํšŸ์ˆ˜(w)๊ฐ€ 5๋ฒˆ์ด๊ณ , k+1 = 7์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ

visited[y][x] = 4 ์ธ ๊ฒฝ์šฐ (x, y) ์ขŒํ‘œ์— ๋ฒฝ์„ 4๋ฒˆ ๋ถ€์ˆ˜๊ณ  ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋Š” ๋œป

visited[y][x] = 7์ธ ๊ฒฝ์šฐ (x, y) ์ขŒํ‘œ๋ฅผ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป

 

์ฝ”๋“œ

from collections import deque
import sys
input = sys.stdin.readline

def bfs(start):
    q = deque()
    q.append(start)
    ans = 1
    time = True
    while q:
        for _ in range(len(q)):
            i, j, w = q.popleft()
            
            if i == n - 1 and j == m - 1:
                print(ans)
                return
            
            for dy, dx in dir:
                ni, nj = i + dy, j + dx
                if ni < 0 or ni >= n or nj < 0 or nj >= m or visited[ni][nj] <= w:
                    continue
                #๋ฒฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋‚ฎ์ด๋“  ๋ฐค์ด๋“  ์ด๋™ ๊ฐ€๋Šฅ
                if graph[ni][nj] == '0':
                        q.append((ni, nj, w))
                        visited[ni][nj] = w
                #๋ฒฝ์ธ ๊ฒฝ์šฐ
                elif w < k:
                    if not time: #๋ฐค ์ธ ๊ฒฝ์šฐ
                        q.append((i, j, w))
                    else:
                        visited[ni][nj] = w
                        q.append((ni, nj, w + 1))
        ans += 1
        time = not time
    print(-1)
    return

n, m, k = map(int, input().split())
graph = [input().rstrip() for _ in range(n)]
visited = [[k + 1 for _ in range(m)] for _ in range(n)]
visited[0][0] = 0

dir = ((1, 0), (-1, 0), (0, 1), (0, -1))

bfs((0,0,0))

 

๋งˆ๋ฌด๋ฆฌ

ํ’€๋‹ค๊ฐ€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ตฌ๊ธ€๋ง ํ–ˆ๋Š”๋ฐ... ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์šด ๋ฌธ์ œ์—ฌ์„œ ํ—ˆํƒˆํ–ˆ๋‹ค.

๋„ˆ๋ฌด ๊นŠ๊ฒŒ ์ƒ๊ฐํ–ˆ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•˜๊ณ , ๊ตฌ์ฒด์ ์ธ ๋ถ€๋ถ„์„ ๋งŽ์ด ๋†“์นœ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๋‹ค.

์•„์ง ๊ณจ๋“œ 1์˜ ๋‚œ์ด๋„๋Š” ์กฐ๊ธˆ ๋ฌด๋ฆฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค...

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1726๋ฒˆ: ๋กœ๋ด‡
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 3055๋ฒˆ: ํƒˆ์ถœ
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16946๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ 4
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16954๋ฒˆ: ์›€์ง์ด๋Š” ๋ฏธ๋กœ ํƒˆ์ถœ
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”