⚡️algorithm

[DFS, BFS] 백준 2644. 촌수 (+ 간략하게 출력하기)

남남이루 2022. 5. 2. 09:12

 

 

기본적인 DFS, BFS 문제인데, 아직 BFS가 익숙하지 않아서 BFS로 해봤다. 

역시나 기본 프레임은 1260번이랑 비슷하다.

  1.  import deque  쓰는 거랑
  2. BFS함수  첫 줄에 deque 만들고 ,
  3.  while q :  로 하나씩 꺼내는 거
  4.  graph  만들 때 쌍방향으로 넣어주기

 

from collections import deque
import sys
sys.stdin = open('C:\\tech\\backjoon\\graph\\input.txt','r')
input = sys.stdin.readline

def BFS(node):
    q = deque()
    q.append(node)
    while q:
        node = q.popleft()
        for i in graph[node]:
            if visit2[i] == 0 :
                visit2[i] = visit2[node] + 1
                q.append(i)

n = int(input())
a,b = map(int, input().split())
m = int(input())

graph = [[] for _ in range(n+1)]
# visit1 = [0]*(n+1)
visit2 = [0]*(n+1)

for i in range(m):
    p, c = map(int, input().split())
    graph[p].append(c)
    graph[c].append(p)
BFS(a)
print(visit2[b] if visit2[b] > 0 else -1)

 

* 간략하게 출력하기

백준 문제 보다보면, 어떤 조건에 맞지 않으면 -1 출력하라는 출력 조건이 있을 때가 있다. 

print(visit2[b] if visit2[b] > 0 else -1)

그때 이렇게 쓰면 한 줄 안에 표현할 수 있다. 앞에가 기본 출력이고, 뒤에가 조건을 쓰는 부분이다. else 뒤에가 '그게 아닐때~ 출력을 이걸로 하겠다'를 쓰면 됨