본문 바로가기

코딩 테스트24

백준 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.
백준 1927번: 최소 힙 (C++) ttps://www.acmicpc.net/problem/1927 해당 문제는 실제 최소힙 자료구조를 사용할 수 있게 구현되어있는 prioriry queue STL 자료형을 사용하는 문제다. 코드는 다음과 같다. #include #include using namespace std; priority_queue pq; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, x; cin >> n; while (n--) { cin >> x; if (x > 0) pq.push(x); else { if (!pq.empty()) { cout 2024. 2. 2.
백준 1715번: 카드 정렬하기 (C++) https://www.acmicpc.net/problem/1715 이 문제는 어떻게 카드를 합쳐 나갈 때 비교 횟수가 적어지는지 파악하는 그리디 알고리즘 문제라고 볼 수 있다. 정말 쉽게 생각하면 방법은 매우 간단합니다. 가장 작은 수의 카드 묶음을 더 해나간다면 자연스럽게 제일 비교 횟수가 적은 방법을 찾게 됩니다. EX1) 30 50 100 300 320 30+50 sum = 80 80 100 300 320 80+100 sum= 80+180 180 300 320 180+300 sum= 80+180 + 480 320 480 320+480 sum= 80+ 180 + 480 + 800 (가장 비교 횟수가 적은경우) 800 EX2) 10 20 40 10+20 sum = 30; 30 40 70 sum = 30.. 2024. 1. 31.