알고리즘 문제 해설: 모듈로 합, 그래프 연결성 및 구간 쿼리

CF577B: Modulo Sum 주어진 수열에서 연속되지 않은 부분 수열을 선택하여 그 합이 특정 수 m으로 나누어 떨어지는지 판단하는 문제입니다. 해결의 핵심은 비둘기집 원리 (Pigeonhole Principle) 에 있습니다. 수열의 길이 n이 모듈로 값 m보다 크다면,PREFIX 합을 m으로 나눈 나머지는 총 m가지 경우しか 존재하지 않습니다. 따라서 n > m인 상황에서는 반드시 같은 나 ...

9월 17일 02:29에 게시됨

알고리즘 대회에서의 C++ STL 효율적 활용 가이드

STL 의 기본 개념과 구성 요소 C++ 표준 템플릿 라이브러리 (Standard Template Library, 이하 STL) 는 다양한 자료 구조와 알고리즘을 범용적으로 제공하는 템플릿 클래스 모음입니다. 개발자의 재구성을 최소화하고 코드의 가독성과 실행 속도를 향상시키는 데 핵심적인 역할을 합니다. 특히 알고리즘 경시대회에서 STL 은 수작업으로 구현하던 복잡한 자료 구조들을 몇 ...

9월 13일 03:33에 게시됨

알고리즘 문제 해결 전략: 비트마스크부터 수론까지

격자 상태 탐색 및 비트마스크 활용 첫 번째 문제는 주어진 격자에서 특정 행과 열을 선택하여 제거했을 때, 남아있는 검은색 셀의 개수가 정확히 K 가 되는 경우의 수를 찾는 문제이다. 행과 열의 개수가 작으므로 비트마스크를 이용하여 모든 조합을 탐색하는 방식이 적합하다. 각 행과 열에 대해 선택 여부를 비트로 표현하여 반복문을 구성한다. 선택된 행이나 열에 포 ...

8월 10일 07:39에 게시됨

AGC007 문제 풀이

A - Shik and Stone 시작점 \((1, 1)\)에서 경로를 시뮬레이션하며 이동하면 된다. #include <bits/stdc++.h> using namespace std; const int MAX_N = 15; string grid[MAX_N]; bool visited[MAX_N][MAX_N]; int main() { int rows, cols; cin >> rows >> cols; string padding(cols + 2, '.'); grid[0] = grid[rows + 1] = pad ...

8월 6일 23:41에 게시됨

Codeforces Round 903 (Div. 3) 풀이

이번 라운드의 A~G번 문제에 대한 핵심 아이디어와 구현 방법을 정리합니다. A. Don't Try to Count 문자열 t가 s의 연속 부분문자열이 되도록 만드는 문제입니다. s를 반복하여 이어붙이면 길이가 2배로 늘어나는 특성을 활용합니다. n·m ≤ 25 조건 덕분에 최대 5번만 반복하면 충분합니다. #include <bits/stdc++.h> using namespace std; bool isSubstr(const s ...

7월 31일 23:32에 게시됨

Codeforces Round 920 (Div. 3) 효율적인 문제 해결 접근법

Problem A: Square 이 문제는 2차원 평면 위에 놓인 정사각형의 네 꼭짓점 좌표가 주어졌을 때, 해당 정사각형의 넓이를 구하는 문제입니다. 정사각형의 변은 항상 x축 또는 y축에 평행하다는 조건이 있습니다. 네 점의 좌표 중에서 x좌표가 같은 두 점을 찾으면, 그 두 점의 y좌표 차이의 절댓값이 바로 한 변의 길이(a)가 됩니다. 따라서 넓이는 a의 제곱으로 계산할 수 ...

7월 27일 18:21에 게시됨

NOI2025 예선 대비 문제 풀이 정리

[NOI2025 예선 R1] A - 기본 사이클 구조 다음의 수학적 원리를 활용한다: Cayley 정리 n개의 노드가 k개의 연결 성분으로 구성되어 있을 때, 이들을 연결하기 위해 k-1개의 간선을 추가하는 방법의 수는 n^(k−2) × ∏(i=1 to k) size_i이다. 이 정리를 바탕으로, 입력 그래프에 이미 사이클이 존재하는 경우 답을 직접 계산할 수 있다. 반면, 초기 상태에서 사이 ...

7월 24일 03:13에 게시됨

ICPC Asia EC Regionals 2024 온라인 예선 (II) 풀이

A - 지역 예선 선택 도박 문제 요약 총 $k$개의 경기가 있으며, 각 경기마다 대학당 최대 $c_i$개 팀이 참가 가능하다. $n$개 팀이 있고 각 팀은 점수와 소속 대학 정보를 가진다. 각 팀은 최대 2개 경기에 출전할 수 있다. 모든 팀이 최악의 상황에서 얻을 수 있는 최선의 순위를 구해야 한다. 핵심 아이디어 최악의 경우는 내가 참가하는 경기에 강팀들이 몰리는 상황이 ...

7월 23일 20:16에 게시됨

睿抗 RC 프로그래밍 대회 국선전 문제 해설 및 C++ 실전 구현

대회 경향성 분석 및 난이도 평가 2022 년부터 2024 년까지 이어진 전국 본선 모의 훈련 문제들을 종합적으로 분석한 결과, 전반적인 난이도 흐름은 2022 > 2024 > 2023 순으로 예상된다. 출제 패턴을 살펴보면 대부분 초기 문제에 문자열 처리나 시뮬레이션 유형이 등장하며, 이후 완전 탐색, 자료구조 활용, 그래프 이론과 동적 계획법(DP) 결합 형태가 차례로 배치된다 ...

7월 5일 21:26에 게시됨

NOIP 2023 알고리즘 문제 풀이

문제 1: 간단한 문자열 처리 첫 번째 문제는 매우 straightforward합니다. 각 행의 문자를 추출하여 정렬한 후 최소 문자열을 만들고, 역순으로 배치하여 최대 문자열을 만들면 됩니다. 코드 확인하기 #include <bits/stdc++.h> using namespace std; using ll = long long; template<typename T> void processRange(T* start, T* end, function<void(T*)& ...

6월 29일 21:06에 게시됨