해리의 데브로그

(SW 문제해결 응용 구현 - 그래프) SWEA 5247 - 연산

|

문제

  • SWEA 5247 - [파이썬 S/W 문제해결 구현 6일차] 그래프의 기본과 탐색 - 연산
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

from collections import deque

def BFS():
    global start_num, end_num, result, tc
    while Q:
        num, cnt = Q.popleft()
        if num == end_num:
            result = cnt
            return

        for i in range(4):
            num2 = 0
            if i == 0:
                num2 = num + 1
                if 0 < num2 <= 1000000 and num_lst[num2] != tc:
                    Q.append((num2, cnt+1))
                    num_lst[num2] = tc

            elif i == 1:
                num2 = num - 1
                if 0 < num2 <= 1000000 and num_lst[num2] != tc:
                    Q.append((num2, cnt+1))
                    num_lst[num2] = tc

            elif i == 2:
                num2 = num*2
                if 0 < num2 <= 1000000 and num_lst[num2] != tc:
                    Q.append((num2, cnt+1))
                    num_lst[num2] = tc

            elif i == 3:
                num2 = num - 10
                if 0 < num2 <= 1000000 and num_lst[num2] != tc:
                    Q.append((num2, cnt+1))
                    num_lst[num2] = tc

TC = int(input())
num_lst = [0] * 1000001
for tc in range(1, TC+1):
    start_num, end_num = map(int, input().split())
    Q = deque()
    Q.append((start_num, 0))
    num_lst[start_num] = tc
    result = 0
    BFS()
    print('#%d %d'%(tc, result))

Comments