Dizzy999
dizzy-theme
Dizzy999
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Machine Learning (1)
      • 논문 리뷰 (0)
      • 수학통계 이론 (1)
      • 짧은글 (0)
    • 알고리즘 (22)
      • 알고리즘 이론 (1)
      • 알고리즘 문제 (20)
      • 짧은글 (1)
    • 프로그램 (2)
      • 프로그래밍 용어 및 상식 (1)
      • C++ (1)
    • 미니프로젝트 (0)
      • Moon Tracker (0)
    • Theme (0)
      • 짧은글 (0)
    • 아두이노&라즈베리파이 (1)
      • 아두이노 (0)
      • 라즈베리파이 (1)
    • Miscellaneous (3)
      • 이과가 이해한 Color (3)
    • OpenCV (0)
      • Tutorial (0)
    • Manim (5)
      • Tutorial (5)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dizzy999

dizzy-theme

알고리즘/알고리즘 문제

[백준-2644] 촌수계산 - Python

2021. 12. 8. 08:24

 

목차

     

     

     

    문제 소개

     

    우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다.

    여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오.

     

     

     

    사용한 알고리즘

     

    더보기
    더보기
    더보기

    BFS

     

     

     

     

    구상

     

    Queue를 사용한 BFS 알고리즘을 사용하면 된다. 

     

     

     

    Code 소개

     

    # Python code
    
    import sys
    import collections
    
    
    
    #sys.stdin = open("input.txt", "r")
    
    n = int(input())
    a,b = map(int,input().split())
    n_number = int(input())
    graph = collections.defaultdict(list)
    
    for i in range(n_number):
        a0 , b0 = map(int,input().split())
        if b0 not in graph[a0] :
            graph[a0].append(b0)
        if a0 not in graph[b0] :
            graph[b0].append(a0)
    
    
    def BFS(a,b):
        Q = collections.deque([])
        check_list = [0]*n
        Q.append(a)
        num_chon = 0
        while Q:
            x = Q.popleft()
            for node in graph[x]:
                if check_list[node-1]==0:
                    Q.append(node)
                    check_list[node-1] = check_list[x-1] + 1
                if check_list[b-1]>0  :
                    return check_list[b-1]
        return check_list[b-1]
    
    aa = BFS(a,b)
    if aa==0:
        print(-1)
    else : 
        print(aa)

     

     

     

    ※ end

     

    반응형
    저작자표시 비영리 변경금지 (새창열림)

    '알고리즘 > 알고리즘 문제' 카테고리의 다른 글

    [백준-9205] 맥주 마시면서 걸어가기 - Python  (0) 2021.12.08
    [백준-2468] 안전 영역 - Python  (0) 2021.12.08
    [백준-1260] DFS와 BFS - Python  (0) 2021.12.08
    [백준-11724] 연결 요소의 개수 - Python  (0) 2021.12.07
    [백준-2583] 영역 구하기 - Python  (0) 2021.12.07
      '알고리즘/알고리즘 문제' 카테고리의 다른 글
      • [백준-9205] 맥주 마시면서 걸어가기 - Python
      • [백준-2468] 안전 영역 - Python
      • [백준-1260] DFS와 BFS - Python
      • [백준-11724] 연결 요소의 개수 - Python
      Dizzy999
      Dizzy999

      티스토리툴바