[SWEA|파이썬] 2814. 최장 경로 (D3)

2023. 5. 12. 16:29·Problem Solving/SWEA
반응형
문제

https://tinyurl.com/2nsxaw4h

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

🐍파이썬
더보기

❌ BFS

from collections import deque
T = int(input())
for test_case in range(1, T+1):
    n, m = map(int, input().split())
    graph = [[]*(n+1) for _ in range(n+1)]
    for _ in range(m):
        a, b = map(int, input().split())
        graph[a].append(b)
        graph[b].append(a)

    def bfs(x):
        global ans
        queue = deque()
        visited[x] = True
        queue.append(x)
        while queue:
            v = queue.popleft()
            for i in graph[v]:
                if not visited[i]:
                    queue.append(i)
                    visited[i] = True
                    ans += 1
    arr = []
    for j in range(1, n+1):
        ans = 1
        visited = [False] * (n + 1)
        bfs(j)
        arr.append(ans)
    print("#{} {}".format(test_case, max(arr)))

DFS, BFS 각이 서는 문제는 웬만하면 두 개 방법 모두 사용가능한데 이 문제는 BFS로 도저히 풀이가 안 나와서(테케 5개만 맞음...) 다른 풀이들처럼 DFS로 갈아탔다.

T = int(input())
for test_case in range(1, T+1):
    n, m = map(int, input().split())
    graph = [[]*(n+1) for _ in range(n+1)]
    visited = [False] * (n + 1)	#방문기록
    
    for _ in range(m):
        a, b = map(int, input().split())
        graph[a].append(b)	#연결된 정점을 이차원배열로 표현
        graph[b].append(a)

    def dfs(x, cnt):
        global ans
        ans = max(ans, cnt)	#최장경로 갱신
        visited[x] = True	#방문체크
        for i in graph[x]:	#정점 x번과 연결된 모든 정점 방문
            if not visited[i]:	#방문한 적 없는 원소만 방문해서
                dfs(i, cnt+1)	#깊이우선탐색
        visited[x] = False	#해당 원소에 대한 다음 경로에서의 dfs를 위해 방문해제

    ans = 1	#경로(=지나는 정점갯수)
    for j in range(1, n+1):	#모든 원소를 방문
        dfs(j, 1)
    print("#{} {}".format(test_case, ans))

모든 원소를 방문해 그 원소부터 시작하는 경로를 확인하고, 그 중 가장 긴 경로를 출력하는 문제이다.

경로의 갯수는 방문한 노드의 갯수이므로 경로를 체크하는 변수 ans는 1부터 시작한다.

dfs 연산에서는 현재 방문한 노드에 대한 방문체크를 하고, 다음 경로의 dfs 연산을 위해 해당 노드의 방문체크를 해제해 주는 것이 중요하다. (ex. 정점 1에서 시작한 경로에도 2가 포함되고 정점 3에서 시작한 경로에도 2가 포함된다면, 1번에서 시작한 dfs연산으로 인해 3번에서 시작한 dfs연산 시 visited[2]는 이미 True이므로 방문목록에서 제외될 수 있음.)

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

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA|파이썬] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 (D3)  (2) 2023.05.14
[SWEA|파이썬] 1493. 수의 새로운 연산 (D3)  (0) 2023.05.14
[SWEA|파이썬] 1860. 진기의 최고급 붕어빵 (D3)  (0) 2023.05.13
[SWEA|파이썬] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (D3)  (14) 2023.05.11
[SWEA|파이썬] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (D3)  (0) 2023.05.10
[SWEA|파이썬] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (D3)  (0) 2023.05.10
'Problem Solving/SWEA' 카테고리의 다른 글
  • [SWEA|파이썬] 1493. 수의 새로운 연산 (D3)
  • [SWEA|파이썬] 1860. 진기의 최고급 붕어빵 (D3)
  • [SWEA|파이썬] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (D3)
  • [SWEA|파이썬] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (D3)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 (505)
      • 프로그래밍 (41)
        • Programming (1)
        • C | C++ (6)
        • Java (28)
        • Python (5)
      • 웹 프로그래밍 (108)
        • HTML | CSS (5)
        • JavaScript | TypeScript (41)
        • React (25)
        • Vue.js (0)
        • Next.js (18)
        • Spring & Spring Boot (13)
        • JSP & Servlet (1)
        • DB (4)
      • 웹 프로젝트 (77)
        • 웹 프로젝트 (22)
        • 🥨스낵몰 (3)
        • 👨‍👨‍👧‍👧소셜 가계부 (26)
        • 🌜꿈 일기장 (11)
        • 🔮포트폴리오 사이트 (11)
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램 (0)
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼 (0)
        • 😺Just Meow It: 조언 사이트 (2)
        • 📕Workly: 교대근무 다이어리 (1)
      • 앱 프로그래밍 (26)
        • Flutter (24)
        • Kotlin (2)
      • Problem Solving (166)
        • 백준 (52)
        • 프로그래머스 (79)
        • SWEA (29)
      • Computer Science (40)
        • 알고리즘 (14)
        • 컴퓨터 네트워크 (18)
        • 이산수학 (8)
      • Developer (47)
        • 후기 (4)
        • 자료정리 (4)
        • 취업 | 취준 (9)
        • SSAFY (1)
        • 웹개발 교육 프로그램 (9)
        • TIL (20)
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    리액트
    Jiraynor Programming
    프로그래머스
    파이썬
    클론 프로젝트
    SWEA
    Next.js
    블로그 제작
    웹사이트
    프로젝트
    자바스크립트
    React
    백준
    타입스크립트
    알고리즘
    자바
    bfs
    mysql
    강의내용정리
    d3
    공식문서
    포트폴리오
    spring boot
    컴퓨터네트워크
    플러터
    구현
    Til
    AWS
    뉴렉처
    ZeroCho
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[SWEA|파이썬] 2814. 최장 경로 (D3)
상단으로

티스토리툴바