반응형
10845번 문제 : 큐
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include <iostream> #include <queue> #include <string> using namespace std; int main() { int num; cin >> num; queue<int> q; while (num > 0) { string inp; cin >> inp; if (inp == "push") { int inp2; cin >> inp2; q.push(inp2); } else if (inp == "pop") { if (!q.empty()) { cout << q.front() << endl; q.pop(); } else { cout << "-1" << endl; } } else if (inp == "size") { cout << q.size() << endl; } else if (inp == "empty") { if (!q.empty()) { cout << "0" << endl; } else { cout << "1" << endl; } } else if (inp == "front") { if (!q.empty()) { cout << q.front() << endl; } else { cout << "-1" << endl; } } else if (inp == "back") { if (!q.empty()) { cout << q.back() << endl; } else { cout << "-1" << endl; } } else { cout << "command error: " << inp << endl; } num--; } return 0; } | cs |
1260 문제 : DFS와 BFS
https://www.acmicpc.net/problem/1260
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <iostream> #include <vector> #include <queue> using namespace std; const int MAXSIZE = 1001; int matrix[MAXSIZE][MAXSIZE]; bool visitedDFS[MAXSIZE]; bool visitedBFS[MAXSIZE]; int N, M, V; vector<int> DFSresult; vector<int> BFSresult; void DFS(int v) { if (visitedDFS[v] == true) return; visitedDFS[v] = true; DFSresult.push_back(v); for (int i = 1; i <= N; i++) { if (visitedDFS[i] == true || matrix[i][v] == 0) continue; DFS(i); } } void BFS(int v) { queue<int> q; q.push(v); visitedBFS[v] = true; while (!q.empty()) { v = q.front(); BFSresult.push_back(v); q.pop(); for (int i = 1; i <= N; i++) { if (visitedBFS[i] == true || matrix[i][v] == 0) continue; q.push(i); visitedBFS[i] = true; } } } int main() { cin >> N >> M >> V; for (int i = 0; i < M; i++) { int inpA, inpB; cin >> inpA >> inpB; matrix[inpA][inpB] = matrix[inpB][inpA] = 1; } DFS(V); BFS(V); for (auto i : DFSresult) cout << i << " "; cout << endl; for (auto j : BFSresult) cout << j << " "; return 0; } | cs |
메모:
-DFS(Depth Frist Search) 깊이 우선 탐색 BFS(Breadth First Search) 너비 우선 탐색
11866번 문제 : 조세퍼스 문제0
1158번 문제 : 조세퍼스 문제
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> #include <queue> #include <vector> using namespace std; int main() { queue<int> q; vector<int> answer; int inputA, inputB; cin >> inputA >> inputB; for (int i = 1; i <= inputA; i++) q.push(i); int counter = 1; while (!q.empty()) { int temp = q.front(); if (counter == inputB) { answer.push_back(temp); q.pop(); counter = 1; } else { q.pop(); q.push(temp); counter++; } } cout << "<"; for (int i = 0; i < answer.size(); i++) { cout << answer.at(i); if(i < answer.size() - 1) cout << ", "; } cout << ">"; return 0; } | cs |
반응형
'C++ Algorithm > 백준 알고리즘 문제 풀이' 카테고리의 다른 글
이항 계수 (0) | 2019.03.13 |
---|---|
피보나치 수 (0) | 2019.03.11 |
스택 사용하기 (기초) (0) | 2019.02.14 |
소수 구하기 (0) | 2019.02.13 |
정렬해보기 (0) | 2019.02.10 |