본문 바로가기

DFS2

[프로그래머스] 네트워크 / 파이썬 / Python / DFS 알고리즘 💡solutions ) 💬 DFS 알고리즘, stack 자료형을 사용하여 문제 해결함 💬 computer 한대씩 visit 배열을 통해 방문하지 않았으면 dfs함수를 돌린다 -> 다른 컴퓨터들과의 연결성을 확인하여 연결돼 있으면 stack 배열에 넣어주기 -> 이때 방문했다고 visit배열에 cnt값 할당 💬 한번의 dfs 탐색이 끝난 후 cnt +=1 로 1씩 값을 키워주기 (전체 네트워크가 몇개인지 찾기 위한 카운트) 💬 이때 주의해야 할 점은, cnt = 0부터 시작하면 visit배열에서 0으로 표현된 것들이 계속 존재하기 때문에 무한루프 돌기 때문에 cnt = 1부터 시작하여 마지막 출력에서 -1한 값이 정답이 된다. 👨‍💻code ) def dfs(visit,computers, i, cnt): .. 2021. 10. 24.
[프로그래머스] 거리두기 확인하기 / 파이썬 / Python / 2021카카오 인턴십 코딩테스트 💡solutions ) 💬 대기실의 각 칸을 하나의 정점으로 보고, 응시자들이 있는 정점을 기준으로 bfs 그래프 탐색을 진행함. 💬 각 정점에서 인접하여 연결된 간선들을 탐색하는데 파티션이 있는 경우는 지나가지 못하고, 거리 2이내의 정점들만 살펴보며 다른 응시자의 유무를 확인함. 💬 이때 지나간 정점은 다시 지나가지 않기 위해 visit 배열을 통해 중복을 체크함. 👨‍💻code ) from collections import deque dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] # 상하좌우 def bfs(place, i, j): visit = [[0]*5 for _ in range(5)] q = deque() q.append((i, j, 0)) visit[i][j] = 1 w.. 2021. 8. 12.