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
- 너비우선탐색
- 그래프 이론
- 그래프 탐색
- 브루트포스
- 구현
- DFS
- oracle
- javascript
- 데이터베이스
- SWEA
- 백준알고리즘
- 완전탐색
- 오라클
- 파이썬
- 브루트포스 알고리즘
- 자바스크립트
- DP
- 백준 알고리즘
- 스택
- Python
- 너비 우선 탐색
- BFS
- 프로그래머스
- 다익스트라
- 백트래킹
- 그리디 알고리즘
- SW Expert Academy
- 문자열
- 다이나믹 프로그래밍
- 깊이우선탐색
Archives
- Today
- Total
민규의 흔적
[Python 파이썬] 프로그래머스 - 네트워크 본문
2024년 8월 6일
문제 링크 : 프로그래머스 - 네트워크
문제 접근
문제 자체는 엄청 간단하다.
서로 이어져있는 여러 대의 컴퓨터가 존재할 때, 각 컴퓨터끼리 이루는 네트워크의 총 개수를 구하면 되는 문제이다.
모든 컴퓨터를 하나씩 시작점으로 지정해보며 만약 아직까지 어느 네트워크에도 소속되지 않은 컴퓨터라면, 해당 컴퓨터를 시작점으로 BFS 로직을 수행해 같은 네트워크에 존재하는 모든 컴퓨터를 알아내기를 반복하면 된다.
BFS 로직을 수행한 횟수가 곧 총 네트워크의 개수가 된다.
전체 코드
from collections import deque
def solution(n, computers):
answer = 0
visited = [False] * n
for start_v in range(n):
if visited[start_v]:
continue
queue = deque()
queue.append(start_v)
visited[start_v] = True
while queue:
now_v = queue.popleft()
for next_v in range(n):
if next_v == start_v:
continue
if computers[now_v][next_v] == 1 and not visited[next_v]:
queue.append(next_v)
visited[next_v] = True
answer += 1
return answer
if __name__ == "__main__":
print(solution(3, [[1, 1, 0], [1, 1, 0], [0, 0, 1]]))
풀이 후기
BFS로 풀 수 있는 간단한 문제였다.
'프로그래머스' 카테고리의 다른 글
[Python 파이썬] 프로그래머스 - 땅따먹기 (1) | 2024.09.10 |
---|---|
[Python 파이썬] 프로그래머스 - 귤 고르기 (0) | 2024.08.06 |
[Python 파이썬] 프로그래머스 - 베스트앨범 (0) | 2024.07.17 |
[Python 파이썬] 프로그래머스 - 다리를 지나는 트럭 (0) | 2024.07.17 |
[Python 파이썬] 프로그래머스 - 이중우선순위큐 (1) | 2024.07.15 |