그리디와 동적 계획법을 활용한 코딩 테스트 문제 풀이

1. 주택 구매를 통한 안락함의 최댓값 계산 n명의 친구가 각각 일정량의 금화를 가지고 있고, m개의 매물이 있는 부동산 시장에서 주택을 구매하려고 합니다. 각 주택은 '안락함'과 '가격'이라는 두 가지 속성을 가집니다. 구매 조건은 다음과 같습니다. 한 사람은 최대 하나의 주택만 구매할 수 있습니다. 한 주택은 최대 한 명에게만 팔릴 수 있습니다. 구 ...

8월 23일 15:09에 게시됨

C++로 구현하는 정보 올림피아드 문제: 장비 합성 시스템

문제 설명 특정 게임에서는 다양한 장비를 수집하고 강화할 수 있는 시스템이 존재한다. 각 장비는 여러 개의 슬롯을 가지며, 각 슬롯에는 특정 가치를 가진 인쇄물이 무한히 존재한다. 게임 내 특정 캐릭터(예: 카구야마 하루카)가 기계 팔을 사용해 아래 방향으로만 움직이며 인쇄물을 추출한다. 이때 기계 팔은 오른쪽으로 이동하거나 제자리에 머무를 수 있으며, 시작 ...

8월 2일 18:30에 게시됨

CV에 혜택이! YTU 그리디 훈련 2(부분 주석)

경고: J 문제는 40분 동안 오류를 찾지 못해 시간 초과 발생(dp>검색) 간단한 문제 풀이(첫 번째 문제는 쉽게 해결됨) 1743 문제 A #include<bits/stdc++.h> using namespace std; const int MAX_SIZE = 100010; int n, k, sortedData[MAX_SIZE], accumulatedSum[MAX_SIZE], result, index1, index2, total; int main() { cin >> n >> k; for(int i= ...

7월 28일 23:16에 게시됨

01 배낭 문제 기반의 최적화 및 조합 알고리즘 응용

LeetCode 1049: 돌 무게 최소화하기 문제는 일련의 돌들이 주어졌을 때, 두 그룹으로 나누어 서로를 부딪히게 하며 마지막 남은 돌의 최소 무게를 구하는 것이다. 이는 결국 전체 무게 합 sum에 대해 가능한 한 균등하게 두 집합으로 분할하는 문제로 전환된다. 즉, 한쪽 그룹의 무게 합이 sum / 2에 가까워야 하며, 이는 01 배낭 문제와 동일한 구조를 가진다. 해결 전략 ...

7월 19일 04:27에 게시됨

NOIP 2024 시뮬레이션 경연 문제 분석 및 구현 가이드

철도 2 (Railway 2) 트리 구조에서 모든 노드 쌍 사이의 거리 함수 $f(i,j)$의 총합을 구하는 문제입니다. 이 문제의 핵심은 특정 노드에서 출발할 때 트리의 지름(Diameter) 끝점 중 하나로 향하는 경로가 최적의 해를 포함한다는 점입니다. 트리의 지름을 구한 뒤, 두 끝점을 기준으로 각 노드까지의 거리를 계산하여 정렬합니다. 이를 통해 각 노드별 기여도를 계산하여 ...

7월 13일 22:29에 게시됨

Codeforces 2133 문제 분석 및 풀이

C The Nether: DAG에서 최장 경로 탐색 이 문제는 그래프의 구조를 쿼리하는 방식으로 해결하는 인터랙티브 문제입니다. 주어진 방향성 비순환 그래프(DAG)에서 가능한 최대 길이의 경로를 찾아야 하며, 쿼리 제한은 2n번입니다. 핵심 전략은 각 정점에서 시작하는 최장 경로 길이를 미리 계산한 후, 그 중 가장 큰 값을 가진 정점을 시작점으로 삼고, 이후 점차 이어지는 ...

7월 10일 18:44에 게시됨

NOIP 연습 세션 #1 상세 문제 풀이

문제 A: 점 쌍의 각도 최적화 이 문제는 두 점 사이의 관계를 최적화하는 전형적인 그리디 알고리즘 문제입니다. 데이터 범위를 고려했을 때 $O(n \log n)$ 시간 복잡도가 필요하며, 정렬을 활용해야 합니다. 핵심 아이디어는 좌표축을 45도 회전시키는 것입니다. 기존 좌표 $(x, y)$를 $(x+y, x-y)$로 변환하면, $y=x$ 또는 $y=-x$에 가장 가까운 값을 찾는 문제가 됩니 ...

6월 28일 01:33에 게시됨

ICPC NERC 2022-2023 문제 해결 기록 및 구현 코드

A - Amazing Trick 이 문제는 순열 조건을 만족하는 두 개의 순열 \( p_1 \)과 \( p_2 \)를 찾는 것이 목표다. 주어진 배열 \( a \)에 대해, 모든 \( i \)에서 \( p[i] \neq i \)이고 \( p[i] \neq a[i] \)인 순열 \( p \)를 무작위로 생성하여 유효성을 검사한다. 난수 셔플을 여러 번 시도한 후 조건을 만족하면 이를 기반으로 \( p_1 \)과 \( p_2 \)를 구성한다. #inclu ...

6월 16일 01:29에 게시됨

KDOI-10 컵 냉각 문제 해결

KDOI-10 컵 냉각 문제 - 로그우 플랫폼 (luogu.com.cn) O(n log n) 시간 복잡도를 가진 알고리즘으로, 각 노드에 대해 최대 및 최소 공기 배출 횟수를 계산합니다. 특정 노드의 최소 횟수가 최대 횟수를 초과하거나 부모 노드 u의 최대 횟수 계산 시 j에서 감소한 값이 허용 범위를 넘으면 냉각 불가능합니다. 그 외 경우는 가능합니다. 최대 횟수 계산은 이분 탐색을 활용 ...

6월 10일 00:28에 게시됨

01 배낭 문제의 다이나믹 프로그래밍 해법과 아이템 추적

문제 정의 무게 제한이 있는 배낭과 여러 개의 아이템이 주어졌을 때, 각 아이템은 고유한 무게와 가치를 가집니다. 한 번에 하나의 아이템만 선택할 수 있으며, 배낭의 총 무게가 허용 범위를 넘지 않도록 하면서 담을 수 있는 아이템들의 총 가치를 최대화하는 것이 목표입니다. 예시: 아이템 개수: 3개 각 아이템의 무게: [1, 3, 4] 각 아이템의 가치: [15, 20, ...

5월 24일 11:51에 게시됨