[백준/Python] 11403. 경로 찾기

2024. 11. 19. 16:33·코딩테스트/BAEKJOON
728x90
반응형

📌문제 유형: 그래프 이론 

https://www.acmicpc.net/problem/11403

 

 

 

📌풀이 

 

문제의 조건을 분석하면, 아래와 같이 볼 수 있다. 

1. 방향 그래프 

2. i->j로 가는 방법이 있는지를 모든 정점에 대해 알아봐야 함. 

 

이때 한 방향으로 계속 깊게 파고 들어야 하니 DFS가 맞다고 판단했다. 

 

각 정점에 대해서, dfs()를 수행하고 갈 수 있는 정점이면 output 1차원 배열에 저장하면 된다. 

하나의 정점 n에 대해 output = [0] * N으로 정의되어 있고, 

graph[n][i] == 1 (갈 수 있는 길이 있고), output[i] == 0 (아직 방문 안했으면) 그 정점 i에 대해 dfs()를 재시행한다. 

 

이걸 모든 정점에 대해 반복하면 완성 !! 

 

⭐ 아이디어: output을 각 정점마다 새로 정의하면 된다는 거. 꼭 하나의 2차원 배열에 넣지 않으려고 해도 된다는 거?

 

N = int(input())
graph = [list(map(int, input().split())) for _ in range(N)]
# output = [[0 for _ in range(N)] for _ in range(N)]
output = [0 for _ in range(N)]
def dfs(n):
    for i in range(N):
        if graph[n][i] == 1 and output[i] == 0:
            # output[n][i] = 1 이렇게 하면 도돌이표, 각 점에 대한 output이 필요
            output[i] = 1
            dfs(i)


for i in range(N):
    dfs(i)
    for j in range(N):
        print(output[j], end = ' ')
    print()
    output = [0 for _ in range(N)]

 

728x90
반응형
저작자표시 비영리 변경금지

'코딩테스트 > BAEKJOON' 카테고리의 다른 글

[백준/Python] 11866. 요세푸스 문제 0  (1) 2024.11.20
[백준/Python] 1874. 스택 수열  (1) 2024.11.19
[백준/Python] 14940. 쉬운 최단거리  (0) 2024.11.19
[백준/Python] 1463. 1로 만들기  (0) 2024.11.18
[백준/Python] 1003. 피보나치 함수  (0) 2024.11.18
'코딩테스트/BAEKJOON' 카테고리의 다른 글
  • [백준/Python] 11866. 요세푸스 문제 0
  • [백준/Python] 1874. 스택 수열
  • [백준/Python] 14940. 쉬운 최단거리
  • [백준/Python] 1463. 1로 만들기
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[백준/Python] 11403. 경로 찾기
상단으로

티스토리툴바