이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 18352(특정 거리의 도시 찾기) - Python(파이썬) -BFS

  • 2022.05.25 00:05
  • [백준] Python,Java로 풀기📖/DFS&BFS
    반응형
     

    18352번: 특정 거리의 도시 찾기

    첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개

    www.acmicpc.net

    풀이 방법 

    모든 도로의 거리가 1이므로 -> bfs 가능하다. 

    ① graph(노드와 간선을 나타내는 그래프) (연결 여부 확인용)으로 사용한다

    -> a와 b가 연결되었다고 가정하면 graph[a] = [b] 이렇게 있도록.

    ② 거리 테이블을 표현하는 테이블 하나 선언하기 (distance) , 이때, 초기값들은 모두 -1이도록 선언

    ③ 시작노드부터 시작하여서 연결된 노드들의 값이 -1인경우(처음 방문하였으므로) 현재 노드의 distance+1

    ④ 출력값이 K와 일치한 노드를 찾는 것이므로 거리 정보 K와 일치한 값일 경우 check =false에서 true가 되게 하고 그 때의 노드 값 출력, check=false인 경우에는 일치하는 노드가 없으므로 -1을 출력

     

    파이썬으로 푼 경우 ) 

    import sys
    from collections import deque
    
    #도시의 개수, 도로의 개수, 거리정, 출발 도시 번호
    n,m,k,x = map(int,sys.stdin.readline().split())
    #도시의 개수만큼 그래프에 [[] [] [] [] ]이런식으로 만듬
    #graph : 노드와 간선을 나타내는 그래프( 연결 여부 확인용 )
    #헷갈리지 않게 n+1개라고 가정해서 노드 0도 있게 하기
    graph=[[] for _ in range(n+1)]
    for i in range(m):
        a,b = map(int,sys.stdin.readline().split())
        graph[a].append(b)
    
    #최단 거리 테이블
    distance =[-1]*(n+1)
    
    def bfs(start):
        q = deque([start])
        distance[start]=0
        while q:#큐가 빌때까지 반복하기
            #현재 있는 곳 q에서 뽑기
            now = q.popleft()
            for i in graph[now]:#현재 값과 연결된 노드
                if distance[i]==-1:
                    distance[i] = distance[now]+1
                    q.append(i)
    
    bfs(x)
    
    check=False
    for i in range(len(distance)):
        if distance[i]==k:
            check=True
            print(i)
    
    if check==False:
        print(-1)

     

    반응형

    '[백준] Python,Java로 풀기📖 > DFS&BFS' 카테고리의 다른 글

    백준 2178(미로 탐색) - Python(파이썬) - BFS  (0) 2022.06.14
    백준 24479(깊이 우선 탐색 1) - Python(파이썬),Java(자바) - DFS  (2) 2022.06.01
    백준 16948(데스나이트) - Python(파이썬),자바(Java)  (0) 2022.05.24
    백준 4936(섬의 개수) - BFS 풀기  (0) 2022.05.21
    백준 14716(현수막) - 파이썬(Python),자바(Java) - DFS(재귀함수),sys.setrecursionlimit(10**6),BFS  (0) 2022.05.20

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 2178(미로 탐색) - Python(파이썬) - BFS

      백준 2178(미로 탐색) - Python(파이썬) - BFS

      2022.06.14
    • 백준 24479(깊이 우선 탐색 1) - Python(파이썬),Java(자바) - DFS

      백준 24479(깊이 우선 탐색 1) - Python(파이썬),Java(자바) - DFS

      2022.06.01
    • 백준 16948(데스나이트) - Python(파이썬),자바(Java)

      백준 16948(데스나이트) - Python(파이썬),자바(Java)

      2022.05.24
    • 백준 4936(섬의 개수) - BFS 풀기

      백준 4936(섬의 개수) - BFS 풀기

      2022.05.21
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 99클럽
    • 오블완
    • 프로그래머스
    • 티스토리챌린지
    • 백준
    • TiL
    • 코딩테스트준비
    • 항해99

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 쿄코코. Designed by Fraccino.

    티스토리툴바