새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 2644 촌수계산

by 언호 2022. 3. 13.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

두 노드간의 거리를 구해야 하므로 BFS를 이용하여 풀이했습니다.

2) 알고리즘

  • BFS

3) 풀이 코드

사용 언어 - Python

import sys
from collections import deque
sys.stdin = open('input.txt')

def solution():                                     
    q = deque([p1])
    visited[p1] = 0                                 # 본인 촌수는 0부터 시작

    while q:
        node = q.popleft()
        for e in linked[node]:                      # 연결된 다음 노드
            if visited[e] == -1:                    
                visited[e] = visited[node] + 1      # 촌수 증가
                q.append(e)



N = int(sys.stdin.readline())                       # 사람 수
p1, p2 = map(int, sys.stdin.readline().split())     # 촌수 찾으려는 두명
E = int(sys.stdin.readline())                       # 연결 관계 수

visited = [-1] * (N+1)                              # 노드 방문 여부
linked = [[] for _ in range(N+1)]                   # 연결 관계 리스트

for _ in range(E):                                  # 연결 관계 생성
    x, y = map(int, sys.stdin.readline().split())
    linked[x].append(y)
    linked[y].append(x)

solution()

if visited[p2] == -1:           # p2와 연결되어 있지 않으면 -1 반환
    print(-1)
else:
    print(visited[p2])          # 연결되어 있으면 촌수 반환

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

- https://www.acmicpc.net/problem/2644

 

2644번: 촌수계산

사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글