SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
N개의 정점과 M개의 간선으로 구성된 가중치가 없는 무방향 그래프에서의 최장 경로의 길이를 계산하자.
정점의 번호는 1번부터 N번까지 순서대로 부여되어 있다.
경로에는 같은 정점의 번호가 2번 이상 등장할 수 없으며, 경로 상의 인접한 점들 사이에는 반드시 두 정점을 연결하는 간선이 존재해야 한다.
경로의 길이는 경로 상에 등장하는 정점의 개수를 나타낸다.
제출 답안

개선 답안
dfs로 풀 수 있음
def dfs(c, v):
global ans
ans = max(ans, len(v)) # 정답 처리: 최대값 갱신
for n in adjL[c]:
if n not in v:
dfs(n, v+[n])
T = int(input())
for test_case in range(1, T+1):
# N: 정점 개수, M: 간선 개수
N, M = list(map(int, input().split()))
adjL = [[] for _ in range(N+1)]
for _ in range(M):
s, e = map(int, input().split())
adjL[s].append(e)
adjL[e].append(s)
ans = 0
for s in range(1, N+1):
dfs(s, [s])
print(f"#{test_case} {ans}")
참고 자료
https://www.youtube.com/watch?v=Hj39HZhcnP4
'알고리즘 > Python' 카테고리의 다른 글
[Python | 백준] 1406: 에디터 (0) | 2023.05.28 |
---|---|
[Python | 백준] 1919: 애너그램 만들기 (0) | 2023.05.26 |
[Python | SWEA] 1860. 진기의 최고급 붕어빵 (0) | 2023.05.20 |
[Python | SWEA] 5208. [파이썬 S/W 문제해결 구현] 5일차 - 전기버스2 (0) | 2023.05.19 |
[Python | SWEA] 1952. [모의 SW 역량테스트] 수영장 (0) | 2023.05.18 |