중복 문자 없는 최장 부분 문자열 찾기
주어진 문자열에서 반복되는 문자가 없는 가장 긴 부분 문자열의 길이를 찾는 알고리즘 문제입니다. 예를 들어, "abcabcbb"의 경우 중복 문자가 없는 가장 긴 부분 문자열은 "abc"이며 길이는 3입니다. "bbbbb"의 경우 가장 긴 부분 문자열은 "b"이고 길이는 1입니다.
접근 방법 1: 고정 크기 배열을 활용한 슬라이딩 윈도우
이 방법은 고정 크기 배열(예: ASCII 문자 ...
8월 4일 11:27에 게시됨
2차원 편순 문제를 활용한 레몬의 행복도 계산
레몬 나무에 n개의 레몬이 매달려 있으며, 각각은 두 가지 속성인 시각적 아름다움(a_i)과 신맛 강도(b_i)를 가진다. 특정 레몬 i를 섭취했을 때 얻는 기쁨 값 e_i는 자기 자신을 제외하고, 아름다움과 신맛 모두가 자신 이하인 다른 레몬들의 개수로 정의된다.
즉, 다음 조건을 동시에 만족하는 인덱스 j의 수이다:
j ≠ i
a_j ≤ a_i
b_j ≤ b_i
모든 레몬에 대해 ...
8월 4일 07:24에 게시됨
루고 P15440 문제 해설
루고 문제에 대한 제 해법입니다.
문제의 핵심은 신호등의 수가 2025개라는 점에서 출발하며, 이때 시간 복잡도가 O(n^2)보다 작은 동적 계획법(DP)을 고려해야 합니다.
각 조작 후 불이 켜진 횟수와 초기 상태 간의 차이를 상태로 설정하면 편리합니다. 첫 번째 조작 후 상태는 0으로 시작합니다. 여기서 dp[i][j]는 (i+1)번째 조작 후 상태 j를 가질 경우의 수를 나타냅 ...
8월 3일 16:20에 게시됨
C#에서 C++ DLL 호출하는 방법
C#에서 C++ DLL을 호출해야 하는 경우
C#으로 클라이언트 애플리케이션을 개발하다 보면 종종 네이티브 C++ 라이브러리를 사용해야 하는 상황이 발생합니다. 이때 P/Invoke(Platform Invoke) 기능을 활용하면 C# 프로그램에서 C++로 작성된 DLL을 호출할 수 있습니다. 본 문서에서는 Visual Studio 2022 환경에서 C++ DLL을 생성하고 C#에서 호출하는 전체 과정을 단계별 ...
8월 3일 09:47에 게시됨
C++로 구현하는 정보 올림피아드 문제: 장비 합성 시스템
문제 설명
특정 게임에서는 다양한 장비를 수집하고 강화할 수 있는 시스템이 존재한다. 각 장비는 여러 개의 슬롯을 가지며, 각 슬롯에는 특정 가치를 가진 인쇄물이 무한히 존재한다.
게임 내 특정 캐릭터(예: 카구야마 하루카)가 기계 팔을 사용해 아래 방향으로만 움직이며 인쇄물을 추출한다. 이때 기계 팔은 오른쪽으로 이동하거나 제자리에 머무를 수 있으며, 시작 ...
8월 2일 18:30에 게시됨
Raylib 게임의 직선 투사체 궤적 간격 오류 해결
Raylib 기반 게임 개발에서 직선형 투사체(포탄)를 구현할 때, 특정 방향으로 이동하는 투사체의 궤적에 검은색 점 간격이 발생하는 문제가 발견되었습니다. 이는 주로 픽셀 기반 라인 그리기 알고리즘의 조건 처리 미흡으로 인해 발생하며, 본 문서에서는 이 문제를 분석하고 해결한 과정을 설명합니다.
개발 환경 및 배경
본 프로젝트는 C++와 Raylib 4.5를 사용하여 2D ...
8월 2일 07:11에 게시됨
C/C++ 문자열 분리 함수 strtok 심층 분석
strtok 함수의 이해와 활용
1. 기본 사용법 및 작동 원리
strtok는 C 언어에서 제공하는 문자열 토큰화 함수로, 지정된 구분자를 기준으로 문자열을 조각내는 데 사용됩니다. 이 함수는 <string.h> 헤더에 정의되어 있으며, 반복 호출을 통해 연속적인 토큰을 추출할 수 있습니다.
함수 시그니처
char *strtok(char *str, const char *delim);
str: 첫 번째 ...
8월 1일 01:16에 게시됨
C++에서 동적 메모리 관리: 포인터와 삭제의 올바른 사용
포인터가 항상 delete를 필요로 하는 것은 아니다. 메모리 해제 여부는 해당 포인터가 가리키는 데이터의 생성 위치와 수명 주기에 따라 결정된다.
힙(동적 메모리)에서 new 또는 new[]로 할당된 메모리는 반드시 delete 또는 delete[]로 수동으로 해제해야 하며, 그렇지 않으면 메모리 누수가 발생한다. 반면 스택, 정적 영역, 글로벌 영역 등에서 생성된 메모리는 시스템 ...
7월 31일 15:21에 게시됨
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++ STL: map과 multimap 심층 분석
map과 multimap 개요
map과 multimap은 C++ Standard Template Library (STL)에서 제공하는 연관 컨테이너로, std::pair 객체를 사용하여 키(key)와 값(value)의 쌍으로 데이터를 저장합니다. 이 두 컨테이너는 내부적으로 레드-블랙 트리(Red-Black Tree) 자료구조를 기반으로 구현되어, 저장된 요소들이 항상 키를 기준으로 정렬된 상태를 유지합니다. 이러한 정렬 특 ...
7월 31일 07:58에 게시됨