반응형
아주아주 오랜만에 코딩문제를 풀어봤다..
특히나 백준만 풀어오다가, 프로그래머스를 첫 도전해봤다.
난 아직도 C++ 벡터와 문자열 처리에 익숙하지가 않다. 그만큼 열심히 안했다는게 느껴진다..
그냥 다른 언어로 전향해볼까..
프로그래머스 환경에 적응도 안됐는데, 문제도 오랜만에 풀어서 아주 머리가 백지가 되었다.
그래서 아래와 같이,, 처음 푼 코드는 매우 지저분했다.
#include <string>
#include <vector>
using namespace std;
void dfs(vector<vector<int>>& v, int i, int n) {
for(int k = 0; k < n; k++) {
if(v[i][k]) {
v[i][k] = 0;
dfs(v, k, n);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for(int i = 0; i < n; i++) {
if(computers[i][i]) {
dfs(computers, i, n);
answer++;
}
}
return answer;
}
프로그래머스의 좋은점은, 풀고 나서 다른 사람의 풀이를
좋아요 순으로 볼 수 있는 것 같다. 그 코드를 참고하고, 검색을 통해 다른 코드를 참고해서 다시 풀어봤다.
https://velog.io/@ajufresh/프로그래머스-네트워크-문제풀이-Java
#include <string>
#include <vector>
using namespace std;
void dfs(vector<vector<int>>& computers, vector<int>& visit, int n, int i) {
visit[i] = 1;
for(int k = 0; k < n; k++) {
if(k != i && computers[k][i] && visit[k] == 0) {
computers[k][i] = 0;
dfs(computers, visit, n, k);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
vector<int> visit(n, 0); // 크기가 n인 1차원 벡터 선언 후 0으로 초기화
for(int i = 0; i < n; i++) {
if(visit[i] == 0) {
dfs(computers, visit, n, i);
answer++;
}
}
return answer;
}
+ 그리고 XCode IDE로 실행을 연습해볼때에는, 2차원 벡터는 이렇게 하면 된다.
vector<vector<int>> v = {{1, 1, 0}, {1, 1, 1}, {0, 1, 1}};
반응형
'[알고리즘 + 자료구조] > [프로그래머스]' 카테고리의 다른 글
프로그래머스 최고의 집합 (0) | 2022.09.30 |
---|---|
프로그래머스 이중우선순위큐 (0) | 2022.09.28 |
프로그래머스 정수 삼각형 (0) | 2022.09.27 |
프로그래머스 오픈채팅방 (0) | 2022.09.23 |
프로그래머스 단어 변환 (1) | 2022.09.23 |