반응형
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 |
Tags
- oracleapex
- 계정계
- 의사결정나무모형
- it자격증
- SQL
- Homebrew
- 오라클
- 채널계
- union
- MSA
- 프로그래머스
- 맥북셋팅
- 컴퓨터공학학사취득
- 학점은행제
- 디렉토리계층구조
- 코어뱅킹
- 학점은행제무료강의
- python
- 모놀리식
- Pass By Value
- 개인프로필스튜디오창업
- DB
- jdk17
- 은행IT
- fastapi
- 맥북
- 맥북환경설정
- 코딩테스트
- 렌탈스튜디오창업
- jdk
Archives
- Today
- Total
개발머해니
[백준] 2606 - 바이러스 (python3) 본문
728x90
반응형
문제
https://www.acmicpc.net/problem/2606
풀이 (bfs)
from collections import deque
# 1. 입력받기
n=int(input()) # 컴퓨터 개수
v=int(input()) # 연결선 개수
graph = [[] for i in range(n+1)] # 그래프 초기화
for i in range(v): # 그래프 생성
a,b=map(int,input().split())
graph[a]+=[b] # a에 b 연결
graph[b]+=[a] # b에 a 연결 -> 양방향
#print(graph)
# 2. 노드 탐색 (bfs / 큐)
visited = [0] * (n+1) # 방문 여부 체크
visited[1]=1 # 1번 컴퓨터부터 시작이니 방문 표시
Q=deque([1])
while Q:
c=Q.popleft() # 왼쪽에서 빼기
for nx in graph[c]:
if visited[nx]==0:
Q.append(nx) #오른쪽에 추가
visited[nx]=1
print(sum(visited)-1)
풀이 (dfs)
# 1. 입력받기
n = int(input())
v = int(input())
graph = [[] for i in range(n+1)] # 그래프 초기화
for i in range(v):
a,b = map(int, input().split())
graph[a] += [b]
graph[b] += [a]
#print(graph)
visited = [0] * (n+1)
# 2. dfs 함수 구현 (재귀)
def dfs(v):
visited[v]=1
for nx in graph[v]:
if visited[nx]==0:
dfs(nx)
#print(f"v={v} | nx={nx} | {visited}")
# 3. 노드 탐색 (dfs / 재귀)
dfs(1)
#print(visited)
print(sum(visited) -1)
출처
https://bio-info.tistory.com/152
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 정수를 나선형으로 배치하기 (python3) (0) | 2024.05.09 |
---|---|
[프로그래머스] 옹알이(1) (0) | 2024.03.25 |
[프로그래머스] 타겟넘버 (0) | 2024.01.05 |
[파이썬] 괄호 짝 확인하기 (0) | 2023.12.15 |
[파이썬] 런던 폭우 Ⅱ (0) | 2023.09.30 |