본문 바로가기

분류 전체보기9

[BOJ - 1715] 카드 정렬하기(C++) 문제   접근 방법항상 가장 작은 두 묶음을 선택하는 방법을 사용해야 함 -> 최소 힙으로 접근하기로 결정    기존 코드#include #include using namespace std;int main() { int N; cin >> N; priority_queue, greater> q; for (int i = 0; i > card; q.push(card); } int result = 0; while (q.size() > 1) { int t = q.top(); q.pop(); t += q.top(); q.pop(); result += t; q.push(t); } co.. 2025. 2. 6.
[BOJ - 2493] 탑(C++) 문제   접근 방법초기에는 queue 자료구조를 이용해 오른쪽에서 왼쪽으로 이동하며 front()에 있는 값보다 작은 경우 queue에 저장, 큰 경우 queue를 비우고 해당 인덱스로 이동하는 구조로 코드를 구현-> 이 경우 idx 처리 부분에서 문제가 생겨 구현되지 않음 * 왼쪽에서 오른쪽으로 stack에 저장하며 레이저를 수신할 탑을 선정하는 알고리즘으로 변경 *레이저를 수신할 탑보다 높이가 낮은 경우 결과를 저장, 수신할 탑보다 높이가 높은 경우 레이저를 수신할 탑을 갱신   코드#include #include #include using namespace std;int main() { int N; cin >> N; vector height(N); for (int i = 0; .. 2025. 2. 6.
[BOJ - 23351] 물 주기(C++) 문제    접근 방법 A는 N의 약수이므로, 물을 줄 때 N/A의 몫 만큼씩 물을 계속해서 줄 때, 살아 있는 기간이 최대.배열의 크기를 N/A로 설정한 후 1, 2, 3의 과정을 반복하며 특정 index의 값이 0보다 작은 경우 반복을 종료(예외 처리) 만약 음수인 경우, 해당 날짜만큼 더 진행된 것이므로 날짜 + arr[idx] 값을 더해줌    코드#include #include using namespace std;int main() { int N, K, A, B; // N 개의 화분, K 만큼의 수분, 연속된 A 개의 화분, B 의 수분 추가 cin >> N >> K >> A >> B; int size = N/A; vector arr(size, K); int cou.. 2025. 2. 4.