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
- 백준 2193번 c++
- 백준 17299번 c++
- 차이
- 유니티 LTS
- 백준 11726번 C++
- TOPCIT 문제 유형
- 유니티
- UML Diagram 정리
- long int 의 차이
- c++
- rigidbody.position
- 로블록스 script local script 차이
- 플레이어 이동
- 백준 10799번 c++
- 유니티 꿀팁
- bfs
- 유니티 Rigidbody 이동
- 백준 2225번 c++
- 풀이
- rigidbody.Moveposition
- TOPCIT 후기
- 백준 10844번 c++
- 2644번
- 1699번
- 배열 stack overflow
- transform.position
- 프로그래머스 단체사진 찍기 C++
- 프로그래머스 가장 큰 수 C++
- 코드
- 백준
Archives
- Today
- Total
Kiki Devlog
[프로그래머스][Lv 2] 네트워크 (BFS) 본문
728x90
코딩테스트 연습 - 네트워크 | 프로그래머스 (programmers.co.kr)
어제 bfs문제를 풀었어서 금방 푼 문제.
풀고나서 다른 풀이 봤더니 queue를 안쓰고 DFS 재귀를 돌리는 방법이 있었다. (BFS 재귀 x. dfs 재귀!!)
bfs든 dfs든 queue나 stack안쓰고 재귀 돌리는게 더 코드가 깔끔해보임. 생각하기 조금 더 까다로울 뿐!(+메모리 효율이 떨어짐)
내 코드
#include <string>
#include <vector>
#include <queue>
using namespace std;
bool visited[200] = { false };
queue<int> q;
void bfs( vector<vector<int>> &computers,int& ans) {
while(!q.empty()){
int comNum = q.front();
q.pop();
//comNum 번째 computer와 연결된 모든 다른 com을 queue에 넣어줌
for (int i = 0; i < computers.size(); i++) {
if (computers[comNum][i] == 1 && !visited[i]) {
visited[i] = true;
q.push(i);
}
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
//연결되지 않은 컴퓨터가 있는지 하나씩 확인.
for (int i = 0; i < computers.size();i++) {
if (!visited[i]) {
answer++;
q.push(i);
bfs(computers, answer);
}
}
return answer;
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Lv 2] 단체사진 찍기 (dfs 길 되돌아가기) (0) | 2022.06.09 |
---|---|
[프로그래머스][Lv 2] 가장 큰 수 (0) | 2022.06.08 |
[프로그래머스][Lv 2] 카카오프렌즈 컬러링북 (2017 카카오코드 예선) (0) | 2022.06.05 |
숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) (0) | 2022.01.03 |
모의고사 (완전탐색) (0) | 2022.01.01 |
Comments