[백준 python] 18352번 특정 거리의 도시 찾기- DFS/BFS

2022. 3. 11. 18:03·지난 글 모음
반응형

[백준 python] 18352번 특정 거리의 도시 찾기- DFS/BFS

레벨: 실버 2

언어: python


문제풀러가기

📑풀이 과정

이 문제에서 보면 모든 도로의 거리는 '1'이란 조건이 있다.
그래프에서 모든 간선(문제에서 도로)의 길이가 동일 할 때는 BFS를 이용하여 최단 거리를 찾을 수 있다.


일반적으로 DFS/BFS 알고리즘을 배울때 방문여부를 저장하는 배열을 사용하는데
이 문제에서는 방문여부를 저장하는 배열에 거리 정보를 담아서 탐색하면된다.


distance라는 거리 정보를 답은 배열을 -1로 초기화 한다.
탐색시 -1의 값은 아직 방문하지 않은 노드(도시)이다.


그리고 문제 설명에서 출발 도시 X에서 X로 가는 최단거리는 항상 0이니
distance[x] = 0으로 초기화 해준다.


그 후 탐색을 하면서 방문하지 않은 다음 도시(next)에 현재 탐색중인(now)의 거리 +1을 넣어 준다.
그리고 distance를 조사하여 k와 같은 값이면 출력 k와 같은 값이 하나도 없다면 -1을 출력한다.

📋풀이 코드

import sys
from collections import deque

input = sys.stdin.readline

# N 도시 수, M 도로 수, K 거리 정보 X 출발 도시
N, M, K, X = map(int, input().split(' '))
graph = [[] for _ in range(N+1)]

for _ in range(M):
  a, b =  map(int, input().split(' '))  
  graph[a].append(b)

distance = [-1] *(N+1)
distance[X] = 0

# BFS 부분
q = deque([X])
while q:
  now = q.popleft()

  for next in graph[now]:
    if distance[next] == -1:
      distance[next] = distance[now]+1
      q.append(next)

# K값이 distance에 있다면 i값출력 없다면 -1 출력
if K in distance:
  for i in range(1, N+1):
    if distance[i] == K:
      print(i)
      check = True
else:
  print(-1)

반응형

'지난 글 모음' 카테고리의 다른 글

[백준 python] 18428번 감시 피하기  (0) 2022.03.15
[백준 python] 18405번 경쟁적 전염 - DFS/BFS  (0) 2022.03.12
[백준 python] 12904번 A와 B 그리디  (0) 2022.03.11
[백준 python] 1339번 단어 수학 - 그리디  (0) 2022.03.10
[백준 python] 19941번 햄버거 분배 - 그리디  (0) 2022.03.10
'지난 글 모음' 카테고리의 다른 글
  • [백준 python] 18428번 감시 피하기
  • [백준 python] 18405번 경쟁적 전염 - DFS/BFS
  • [백준 python] 12904번 A와 B 그리디
  • [백준 python] 1339번 단어 수학 - 그리디
코딩하자영아
코딩하자영아
코딩공부내용 정리
  • 코딩하자영아
    코드치고 무게치고
    코딩하자영아
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 개발 (2)
      • 지난 글 모음 (81)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SW정글
    자바스크립트 문자열 변수
    회원가입
    html input
    Spring
    dfsbfs
    템플릿 문자열
    Express
    정글sw
    회원가입 폼
    sw정글사관학교
    프로그래머스
    node.js
    conding test
    HTML
    자바스크립트
    onChange
    리액트
    sw 정글
    malloc-lab
    python
    PINTOS
    목록 창 만들기
    Coding Test
    사용자 정의 객체
    javascript
    코딩테스트
    React
    백준
    JavaScrpit
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
코딩하자영아
[백준 python] 18352번 특정 거리의 도시 찾기- DFS/BFS
상단으로

티스토리툴바