본문 바로가기

C++66

백준 5667번: 결혼식 (C++) 링크 https://www.acmicpc.net/problem/5567 풀이방법 해당 문제는 BFS를 응용하여 시작 지점부터 거리를 측정하여, 시작 지점인 1로부터 거리가 1. 2인 값들만 찾아내서 개수를 세면 쉽게 풀 수 있는 문제다. 풀이 코드는 아래와 같다. 코드 #include using namespace std; int n, m; vector adj[505]; int vis[505]; int ans; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; int u, v; for (int i = 0; i > u >> v; adj[u].push_back(v); adj[v].push_back(u); }.. 2024. 2. 2.
백준 1260번: DFS와 BFS (C++) 링크 https://www.acmicpc.net/problem/1260 풀이방법 해당 문제는 그래프 관련 dfs와 bfs 기초적인 사용법을 묻는 문제로 기본적인 dfs, bfs지식만 가지면 풀 수 있다 하지만 문제에서 말하는 세 가지 조건을 유의해서 코드를 작성해야한다. 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 탐색을 시작할 정점의 번호 V가 주어진다. 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 코드 #include using namespace std; int n, m; vector adj[1005]; bool vis[1005]; int v; void bfs(int v) { queue q; q.push(.. 2024. 2. 2.
백준 11724번: 연결 요소의 개수 https://www.acmicpc.net/problem/11724 해당 문제는 그래프의 개념과 BFS를 동시에 물어보는 가장 기초적이고 핵심적인 문제이며 코드 구성을 외우고 이해할 필요가 있는 문제이다. 코드는 아래와 같다. #include using namespace std; int n, m; vector adj[1005]; bool vis[1005]; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 0; i > u >> v; adj[u].push_back(v); adj[v].push_back(u); } int num = 0; for (int i = 1; i 2024. 2. 2.
백준 2075번: N번째 큰 수 (C++) https://www.acmicpc.net/problem/2075 해당 문제는 굉장히 쉬워 보이나 그 쉬운 생각으로 풀게 되면 메모리를 초과하게 된다. 따라서 가장 큰 N개의 수 만큼만 담고 있으면 메모리를 초과할 일이 없게 된다. #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int N, num; priority_queue pq; cin >> N; for (int i = 0; i > num; pq.push(num); if (N < (int)pq.size()) pq.pop(); } cout 2024. 2. 2.