2025년 2월 4일~9일 주차 문제 정리

주간 개요 이번 주는 생활 리듬이 불규칙하여 학습 효율이 저하되었고, 이를 개선하기 위해 환경을 변경하였다. 새로운 일정으로 인해 다음 주부터는 더 체계적인 학습과 경기 준비를 할 계획이다. 문제 해결 기록 SMU Winter 2025 Round 6 B. 스트리머의 밤 문제 요약: 여러 프로그램의 시작 및 종료 시간이 주어질 때, 전체 시간 내에 볼 수 있는 최대 프로그램 수를 ...

7월 1일 05:37에 게시됨

Codeforces Educational Round 50 (Div. 2) 문제 분석 및 해결

A. Function Height 수평선 위에 $2n+1$개의 점이 있으며, 초기 위치는 $(i, 0)$입니다. 홀수 번째 인덱스의 점만 $y$ 좌표를 1만큼 증가시킬 수 있습니다. 이 과정을 통해 선분 $P_iP_{i+1}$와 $x$축 사이의 면적이 정확히 $k$가 되도록 하고, 모든 점의 최대 높이를 최소화해야 합니다. 가능한 최소값을 구하세요. 전체적으로 $n$개의 점만 조작 가능하며, 각각의 조작은 ...

6월 27일 19:46에 게시됨

K-주기 문자열 생성을 위한 최소 연산 횟수 계산

문제 설명 길이가 n인 문자열 word와 정수 k가 주어지며, k는 n의 약수입니다. 한 번의 연산에서, 임의의 두 인덱스 i와 j를 선택할 수 있습니다(여기서 0 <= i, j < n이고, 두 인덱스 모두 k로 나누어 떨어짐). 그런 다음 j에서 시작하는 길이가 k인 부분 문자열로 i에서 시작하는 길이가 k인 부분 문자열을 대체합니다. 즉, 부분 문자열 word[i…i + k - 1]을 부분 ...

6월 27일 03:45에 게시됨

다중 작업 스케줄링 최적화: 최단 완료 시간 계산

문제 설명 공장은 m개의 생산 라인을 운영하며, n개의 독립적인 작업을 병렬 처리해야 합니다. 시스템은 항상 처리 시간이 가장 짧은 작업부터 우선 배치합니다. 각 작업의 처리 시간이 주어졌을 때, 모든 작업이 완료되는 총 소요 시간을 구하세요. 작업 수가 라인 수를 초과하면, 처음에 처리 시간이 짧은 m개의 작업이 라인에 할당되고, 이후 한 라인이 작업을 완료할 ...

6월 8일 19:40에 게시됨

반悔 힙 그리디를 활용한 최대 이익 매칭 알고리즘

문제 A: 사과 구매 기본적인 나눗셈 연산을 통해 해결할 수 있는 간단한 문제입니다. n, x = map(int, input().split()) result = n // x print(result) 문제 B: 소의 분류 문자열의 빈도수를 기준으로 다양한 경우의 수를 분석해야 합니다. from collections import Counter data = input().strip() frequency = sorted(Counter(data).values()) length = len(frequency ...

6월 6일 02:33에 게시됨

트리 병합을 이용한 최대 비용 계산 알고리즘

문제 정의 노드 개수가 \\(n\\)개인 트리가 주어집니다. 각 노드 \\(i\\)에는 두 정수값 \\(a_i\\)와 \\(b_i\\)가 할당되어 있습니다. 노드 선택 순서는 다음 조건을 만족해야 합니다: 어떤 노드를 선택하기 전에 그 노드의 모든 조상 노드가 먼저 선택되어야 합니다. 이러한 순서로 선택된 노드 배열 \\(p\\)에 대해 비용은 다음 식으로 계산됩니다: \[\sum_{i=1}^n \lef ...

5월 23일 06:28에 게시됨

자녀 줄세우기 문제 풀이

자녀 줄세우기 출처 제5회 랴오차오컵 지역 C++ B그룹 알고리즘 트리 배열 그리디 병합 정렬 문제 설명 n명의 아이들이 일렬로 서 있습니다. 이제 키가 작은 순서대로 정렬해야 하지만, 인접한 두 아이만 교체할 수 있습니다. 각 아이에는 불만도가 있습니다. 처음에는 모든 아이들의 불만도가 0입니다. 어떤 아이가 처음 교체를 요청받으면 불만도가 1 증가하고, 두 번째 ...

5월 19일 15:27에 게시됨