필요/코딩테스트(백준)(49)
-
[백준/C++]#2146 - 다리 만들기
풀이 #include #include using namespace std; int N; int a[101][101]; int g[101][101]; int d[101][101]; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int main() { scanf("%d", &N); for (int i=0; i
2021.02.15 -
[백준/C++]#7576 - 토마토
풀이 #include #include using namespace std; int N, M; int a[1001][1001]; int ck[1001][1001]; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int main() { queue q;// pair 받는 큐 선언 scanf("%d %d", &M, &N); for (int i=0; i
2021.02.13 -
[백준/C++]#2178 - 미로 탐색
풀이 #include #include using namespace std; int N, M; int a[101][101]; int ck[101][101]; int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int main() { scanf("%d %d", &N, &M); for (int i=0; i
2021.02.11 -
[백준/C++]#4963 - 섬의 개수
풀이 #include using namespace std; int a[51][51]; bool ck[51][51]; int dx[] = {-1, -1, -1, 0, 0, 1, 1, 1};//상하좌우 대각 int dy[] = {-1, 0, 1, -1, 1, -1, 0, 1}; int w,h; void dfs(int y, int x, int CNT) { ck[y][x] = true; for (int k=0; k> h && (w!=0 && h!=0)) {// w와 h가 모두 0이면 종료 for (int i=0; i a[i][j];// 입력 ck[i][j] = false;// ck 배열 초기화 } } int cnt=0; for (int i=0; i
2021.02.10 -
[백준/C++]#2667 - 단지번호붙이기
풀이 #include #include using namespace std; int a[26][26]; int check[26][26]; int dx[] = {0, 0, 1, -1};// 상하좌우 + 1 int dy[] = {1, -1, 0, 0}; int ans[25*25]; int n; void dfs(int x, int y, int CNT) { check[x][y] = CNT; for (int k=0; k
2021.02.09 -
[백준/C++]#9466 - 텀 프로젝트
풀이 #include using namespace std; int a[100001]; int check[100001]; int numb[100001]; int dfs(int node, int len, int num) { if (check[node] != 0) {// 사이클의 시작부분일 때 if (num != numb[node]) {// 지금 고유번호와, 사이클 고유번호가 다르면 return 0; } else return len-check[node];// 사이클 길이 출력 } check[node] = len;// 길이 대입 numb[node] = num;// 고유번호 대입 return dfs(a[node], len+1, num);// 탐색 순환 } int main() { int t; cin >> t; wh..
2021.02.09 -
[백준/C++]#2331 - 반복수열
풀이 #include #include #include #include using namespace std; pair a[300000]; bool check[300000]; int cnt = 0; void dfs(string N, int P) { int node = std::stoi(N);// 문자열 -> 정수 check[node] = true; int findNext = 0;// 다음에 연결되는 노드 계산 for (int i=0; i 문자열 dfs(nextS, P); } else { cout > n >> p; dfs(n, p); return 0; } 개념 문자열을 숫자로 바꾸고, 숫자를 문자로 바꾸는데 string 라이브러리가 사용된다. std::stoi (문자열 -> 숫자), std::to_string..
2021.02.07 -
[백준/C++]#10451 - 순열 사이클
풀이 #include #include #include using namespace std; vector a[1001]; bool check[1001]; void dfs(int node) { check[node]=true; for (int i=0; i> t; while (t--) { int n; cin >> n; for (int i=1; i v; a[i].push_back(v); } int cnt=0; for (int i=1; i> t; while (t--) { int n; cin >> n; for (int i=1; i> a[i]; c[i] = false; } int ans = 0; for (int i=1; i2 인 경우에도 탐색이 끝나서 cnt가 +1 되기 때문이다. 이 부분은 좀 더 고민해 봐야겠다...
2021.02.05 -
[백준/C++]#1707 - 이분 그래프
풀이 #include #include #include using namespace std; vector a[20001]; int apart[20001]; void dfs(int node, int c) { apart[node] = c; for (int i=0; i> t; while (t--) { int n, m; cin >> n >> m; for (int i=1; i u >> v; a[u].push_back(v); a[v].push_back(u); } for (int i=1; i
2021.02.04