๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ & ๋ฐฑ์ค€ 16953 ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/[๐๐ฒ๐ญ๐ก๐จ๐ง] ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ & ๋ฐฑ์ค€ 16953

๐ŸคRyusun๐Ÿค 2023. 8. 31. 23:27
#ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ

from collections import deque

def solution(maps):
    n, m = 0, 0
    for _ in range(len(maps)):
        n += 1
    for _ in maps[0]:
        m += 1
    d_row = [0, -1, 0, 1]
    d_col = [1, 0, -1, 0]
    queue = deque()
    queue.append([0,0])
    maps[0][0] = 1
    while queue:
        x, y = queue.popleft()
        if x == n-1 and y == m-1:
            return maps[n-1][m-1]
        for d in range(4):
            nx = x + d_row[d]
            ny = y + d_col[d]
            if 0<= nx < n and 0<=ny<m:
                if maps[nx][ny] == 1:
                    queue.append([nx,ny])
                    maps[nx][ny] = maps[x][y] + 1

    return -1
#๋ฐฑ์ค€ 16953

n, m = map(int, input().split())
from collections import deque
def bfs(n, m):
    queue = deque()
    queue.append([n, 1])
    visited = [n]
    while queue:
        x, cnt = queue.popleft()
        if x == m:
            return cnt
        for nx in (x*2, int("".join([str(x), str(1)]))):
            if 0<nx <= m and nx not in visited:
                queue.append([nx, cnt+1]) #cnt๋„ queue์— ๊ฐ™์ด ๋„ฃ์–ด์ฃผ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค!!!
                visited.append(nx)

    return -1

print(bfs(n,m))

๋ฐฑ์ค€ 16953๋ฒˆ์€ PyPy3๋กœ ํ•ด์•ผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹คใ… _ใ