250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- BFS
- 백준
- 부트스트랩 클래스 로더
- 어플리케이션 클래스 로더
- 객체지향
- 다이렉트 레퍼런스
- 파이썬
- java
- 클래스 로더 계층
- 코딩테스트
- 자료구조
- stop the world
- 스프링
- 알고리즘
- python
- 심볼릭 레퍼런스
- 파이썬 리스트 메서드
- 딕셔너리
- aws saa-c03
- AWS SAA-C03 합격후기
- dfs
- 파이썬 문자열 메서드
- Spring
- python list method
- 2026 AWS SAA-C03
- 스프링 컨테이너
- getreference
- 플랫폼 클래스 로더
- 자바
- 컴포넌트 스캔
Archives
- Today
- Total
클라우드 낚시꾼
[백준] 24445번 알고리즘 수업-너비 우선 탐색 2 (BFS 시간 초과 해결) 본문
728x90

문제 해결 과정

이 문제는 단순 BFS 문제였고, 인접 정점을 내림차순으로 정렬하는 조건이 중요했다. 문제가 쉬움에도 불구하고 나는 계속 답은 맞는데 시간 초과 문제가 발생했다. 그 이유는 아래와 같다.
시간 초과가 발생했던 이유

원래 필자는 그래프에 정보를 추가하면서 인접 정점을 정렬하였다. 그래서 정렬 과정이 2번 일어났고 이것이 시간 초과가 발생했던 주된 이유였다. 시간 초과 문제를 해결하기 위해 기존의 정렬 코드를 없애고 그래프 정렬을 위한 for문을 작성하여 정렬과정을 수행했다.
그 결과 정렬 코드의 시간 복잡도가 O(2n)에서 O(n)으로 감소하였다.
전체 코드
import sys
from collections import deque
input = sys.stdin.readline
m,n,r = map(int,input().split())
graph = [[] for _ in range(m+1)]
for i in range(n):
u,v = map(int, input().split())
graph[u].append(v)
# graph[u].sort(reverse=True)
graph[v].append(u)
# graph[v].sort(reverse=True)
[graph[i].sort(reverse=True) for i in range(1,m+1)]
def bfs(graph, i, visited,ans):
queue = deque([i])
visited[i] = True
cnt = 0
while queue:
cnt += 1
v = queue.popleft()
ans[v] = cnt
for r in graph[v]:
if not visited[r]:
queue.append(r)
visited[r] = True
visited = [False] * (m+1)
ans = [0] * (m+1)
bfs(graph,r,visited,ans)
[print(ans[k]) for k in range(1,m+1)]
한 줄 요약
그래프를 정렬할 때는 O(n)의 시간 복잡도가 나오도록 코딩하자!
728x90
'CodingTest > 문제풀이' 카테고리의 다른 글
| [백준] 13656 침투 - BFS (Python3) (0) | 2023.12.29 |
|---|---|
| [백준] 18352번 특정 거리의 도시 찾기 - BFS(Python3) (1) | 2023.12.29 |
| [백준] 2644번 촌수계산 - DFS (Python3) (0) | 2023.12.28 |
| [백준] 13023번 ABCDE - DFS 풀이 + 반례 (Python3) (0) | 2023.12.27 |
| [백준] 11724번 연결 요소의 개수 - DFS(stack, 재귀함수) (Python3) (0) | 2023.12.27 |