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
- 20006
- 시뮬레이션
- Python
- 백준
- 20922
- 토익스피킹
- 수학
- 토스유튜브
- 삼성코테기출
- BFS
- 토스독학
- 삼성빈출
- mcp사용법
- 토스
- 3dgs
- 그래프탐색
- mcp란
- 너비우선탐색
- 구현
- 그리디
- 그리디알고리즘
- mcp튜토리얼
- DP
- 28215
- 최단거리추적
- 그래프
- 시계토끼제니쌤
- 코테
- 미지의 공간탈출
- 토스만능문장
Archives
- Today
- Total
Victory in my life
Baekjoon 11724 | 연결요소의 개수 (Python) 본문
📌문제
SILVER2 / 그래프 / 그래프 탐색 / BFS / DFS
https://www.acmicpc.net/problem/11724
📌문제 분석 및 설계
dfs를 몰라서 개념공부할겸 정한 문제이다.
bfs도 적용가능해서 두 버전으로 코드를 돌려봤다.
아래 코드에 있는 DFS와 BFS가 딱 해당 알고리즘의 코드이니, 모르시는 분들은 우선 냅다 외워둬도 괜찮을 것 같다.
중요했던건 sys.setrecursionlimit(10**6) 해당 코드를 안넣으면 백준에서 계속 런타임에러가 났다..
기억하기 ..
📌소스 코드
DFS버전
import sys
from collections import deque
sys.setrecursionlimit(10**6)
input=sys.stdin.readline
N,M=map(int,input().split())
graph=[[] for _ in range(N+1)]
for _ in range(M):
u,v=map(int,input().split())
graph[u].append(v)
graph[v].append(u)
visited=[0]*(N+1)
def dfs(start):
visited[start]=1
for new in graph[start]:
if not visited[new]:
dfs(new)
cnt=0
for i in range(1,N+1):
if not visited[i]:
dfs(i)
cnt+=1
print(cnt)
BFS버전
import sys
from collections import deque
input=sys.stdin.readline
N,M=map(int,input().split())
graph=[[] for _ in range(N+1)]
for _ in range(M):
u,v=map(int,input().split())
graph[u].append(v)
graph[v].append(u)
visited=[0]*(N+1)
def bfs(start):
q=deque([start])
visited[start]=1
while q:
node=q.popleft()
for new in graph[node]:
if not visited[new]:
q.append(new)
visited[new]=1
cnt=0
for i in range(1,N+1):
if not visited[i]:
bfs(i)
cnt+=1
print(cnt)
'CodingTest > Baekjoon' 카테고리의 다른 글
Baekjoon 28215 | 대피소 (Python) (0) | 2025.02.28 |
---|---|
Baekjoon 1463 | 1로 만들기 (Python) (0) | 2025.02.27 |
Baekjoon 1343 | 폴리오미노 (Python) (0) | 2025.02.26 |
Baekjoon 14940 | 쉬운 최단거리 (Python) (0) | 2025.02.26 |
Baekjoon 2178 | 미로 탐색(Python) (0) | 2025.02.25 |