루고 P15440 문제 해설

루고 문제에 대한 제 해법입니다. 문제의 핵심은 신호등의 수가 2025개라는 점에서 출발하며, 이때 시간 복잡도가 O(n^2)보다 작은 동적 계획법(DP)을 고려해야 합니다. 각 조작 후 불이 켜진 횟수와 초기 상태 간의 차이를 상태로 설정하면 편리합니다. 첫 번째 조작 후 상태는 0으로 시작합니다. 여기서 dp[i][j]는 (i+1)번째 조작 후 상태 j를 가질 경우의 수를 나타냅 ...

8월 3일 16:20에 게시됨

알고리즘 문제 풀이: 증가하는 부분 수열, 순열, 중복 순열

1. 증가하는 부분 수열 문제 링크: LeetCode 문제 설명: 주어진 배열의 부분 수열 중에서 각 요소가 이전 요소보다 크거나 같은 모든 가능한 부분 수열을 찾아야 합니다. 배열의 원래 순서를 변경할 수 없습니다. 풀이 방법: 이 문제는 조합 문제와 유사하지만, 각 단계에서 현재 요소가 경로(path)의 마지막 요소보다 작으면 건너뜁니다. 또한 배열에 중복 요소가 있을 수 ...

8월 2일 11:18에 게시됨

USACO 2022년 12월 실버 대회 - Bronze Division 풀이

1. Cow College - 최대 수익 구하기 Farmer John이 소들을 위한 대학을 세우려고 한다. N마리의 소(1 ≤ N ≤ 10^5)가 있으며, 각 소는 최대 c_i(1 ≤ c_i ≤ 10^6)만큼의 학비를 낼 의향이 있다. 등록금을 책정했을 때, 소가 지불할 수 있는 최대 금액보다 높으면 해당 소는入学하지 않는다. FJ는 최대 수익을 얻고자 하며, 그때의 등록금을 구해야 한다. 여러 답이 있다면 가 ...

7월 31일 14:39에 게시됨

2025-11-05 NOIP 모의 대회 2 후기

결론 짧게: 100+0+0+0 점수. T1: 소 Z의 장갑 문제 설명 길이가 \(n\)인 배열 \(a\)와 길이가 \(m\)인 배열 \(b\)가 주어집니다. 이 배열에서 \(\min(n,m)\)개의 쌍 \(a_i, b_j\)를 매칭해야 합니다. 각 숫자는 한 번만 매칭할 수 있습니다. 매칭의 비용은 \(|a_i - b_j|\)이며, 매칭 그룹의 비용은 이들 중 최댓값입니다. 이 최댓값을 최소화해야 합니다. 대회 당시 탐욕 ...

7월 31일 09:43에 게시됨

C++ 를 활용한 삽입 정렬 알고리즘 구현과 테스트

삽입 정렬의 핵심 개념 삽입 정렬 (Insertion Sort) 은 데이터를 하나씩 꺼내어 이미 정렬된 부분에 올바른 위치를 찾아 삽히는 방식입니다. 주로 부분적으로 정렬된 데이터를 처리하거나 데이터 크기가 작을 때 효율적입니다. 이 알고리즘은 불안정하지 않으며 시간 복잡도는 평균적・최악의 경우 O(n²) 입니다. 오름차순 정렬 구현 왼 ...

7월 31일 06:46에 게시됨

실험 2

#include <stdio.h> #include <stdlib.h> #include <time.h> #define STUDENT_COUNT 5 #define RANGE_START 397 #define RANGE_END 476 #define SHORT_RANGE 21 int main() { int counter; int category; int random_value; srand(time(NULL)); counter = 0; while(counter < STUDENT_COUNT) { category ...

7월 27일 23:32에 게시됨

자바스크립트 고급 정렬 알고리즘 구현

셸 정렬 삽입 정렬의 개선된 버전으로, 원소를 멀리 떨어진 요소부터 비교합니다. 전체 배열을 부분 시퀀스로 분할하여 각각 삽입 정렬을 수행한 후 최종적으로 전체 정렬을 완성합니다. 동작 과정 감소하는 증분 시퀀스(t₁, t₂, ..., tₖ) 설정 (tₖ=1) 각 증분 크기별로 부분 배열 분할 부분 배열에 삽입 정렬 적용 function shellSort(arr) { const len = arr.lengt ...

7월 27일 09:50에 게시됨

지속성 세그먼트 트리

개요 이 자료구조는 여러모로 유용하지만, 코드를 작성하는 것은 다소 복잡합니다. 특히 길이가 매우 길어질 수 있습니다. 기본 지식: 세그먼트 트리 본론 지속성 세그먼트 트리—문자 그대로 해석하면 '주석이 달린 트리'입니다. 지속성 세그먼트 트리는 여러 개의 세그먼트 트리로 구성됩니다(개인적인 이해, 아래 그림 참조). 처음에는 단 한 그루의 세그먼트 트리만 존 ...

7월 26일 21:15에 게시됨

C언어 포인터와 문자열 처리 실습

본 문서는 C 언어의 포인터 및 문자열 처리 기능을 활용한 다양한 프로그래밍 연습 과제를 포함합니다. Task 1-1: 배열 요소의 최대값 및 최소값 찾기 정수 배열의 모든 요소를 순회하며 최대값과 최소값을 찾는 함수를 구현합니다. 함수는 배열의 첫 번째 요소의 주소를 최소값과 최대값의 초기값으로 설정하고, 나머지 요소를 검사하며 값을 갱신합니다. 이 과정에서 포 ...

7월 26일 10:28에 게시됨

MX-S 모의고사 풀이 노트

T1: 메시지 필터링 문제 개요 총 n개의 채팅방을 순서대로 확인하며, 각 메시지에 bie 부분 문자열이 포함되어 있고 아직 전송한 적 없는 경우에만 전송한다. 전송할 메시지가 없는 채팅방은 특정 문구를 출력한다. 해결 방법 문자열 탐색과 중복 체크가 핵심이다. bie 존재 여부는 단순 순회로 확인하고, 중복 방지를 위해 해싱 기법을 활용한다. 더블 해싱을 적용해 충돌 ...

7월 26일 03:02에 게시됨