블록 기반 구조와 블록 리스트의 활용
블록 분할 기법
길이가 n인 배열을 약 √n개의 블록으로 나누면, 각 블록의 크기는 최대 √n이 되며, 임의의 구간 연산은 최대 √n개의 완전한 블록과 두 개의 부분 블록으로 표현 가능하다.
시간 복잡도는 기존의 O(n²)에서 O(n√n)으로 개선된다.
기본 구현 틀
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
typedef ...
6월 21일 03:59에 게시됨
조합론과 수론의 주요 개념들
조합론과 수론은 알고리즘 문제 해결에서 중요한 역할을 한다. 여기에서는 이 분야의 핵심적인 개념들과 이를 활용한 몇 가지 기법들을 다룬다.
조합론
가법 원리와 곱셈 원리
가법 원리에 따르면, 어떤 일을 수행하는 두 가지 방법이 있을 때 첫 번째 방법으로는 a개의 방법이 있고, 두 번째 방법으로는 b개의 방법이 있다면 총 a+b개의 방법으로 일을 완수할 수 있다. 곱 ...
6월 20일 17:51에 게시됨
소인수분해 구현: 루트 N 최적화 방법
소인수분해 문제
양의 정수 N이 주어졌을 때, 이를 소수들의 곱으로 분해하는 문제입니다.
예: 60 = 2 × 2 × 3 × 5
입력 조건
하나의 정수 N (2 ≤ N ≤ 1,000,000,000)
출력 조건
N의 소인수들을 오름차순으로 출력
예시
입력: 60
출력: 2 2 3 5
입력: 3
출력: 3
접근 방법
초보자들은 보통 2부터 N까지 반복문을 돌며 확인하지만, N이 최대 10억일 때는 시간 초과 ...
6월 20일 06:12에 게시됨
TV 구독 최소화 문제 (고급 버전)
시간 제한: 2초
메모리 제한: 256MB
입력: 표준 입력
출력: 표준 출력
쉬운 버전과 고급 버전의 유일한 차이점은 제약 조건입니다.
BerTV 채널은 매일 k개의 TV 프로그램 중 하나의 에피소드를 방영합니다. 다음 n일간의 방송 스케줄을 알고 있습니다: 정수 시퀀스 a₁, a₂, ..., aₙ (1≤aᵢ≤k), 여기서 aᵢ는 i일째에 방영될 프로그램입니다.
프로그램 구독은 해당 프로그램의 ...
6월 20일 01:25에 게시됨
데이터 구조에서 맵과 세트 (하)
이전 글에서 다루지 못한 기술적 개념을 찾으세요:
**개인 홈페이지:**我要学编程(ಥ_ಥ)-CSDN 블로그
소속 전문: 데이터 구조 (Java 버전)
이전 글에서는 이진 탐색 트리, 맵과 세트의 기본 개념, 해시 테이블의 충돌 해결 방식 등을 다뤘습니다. 데이터 구조에서 맵과 세트 (상) - CSDN 블로그
이제 나머지 주제를 살펴보겠습니다.
목차
충돌 해결 - 클로즈드 해싱
충돌 ...
6월 20일 01:11에 게시됨
임베디드 C++ 알고리즘 완벽 가이드
1. 수정되지 않는 시퀀스 알고리즘
이러한 알고리즘들은 작업 중인 컨테이너의 요소들을 변경하지 않습니다.
1.1 찾기 알고리즘: find와 find_if
find(start, end, value): value와 동일한 첫 번째 요소를 찾아 반복자를 반환 (없으면 end 반환)
find_if(start, end, 조건자): 조건을 만족하는 첫 번째 요소를 찾습니다
find_end(start, end, sub_start, sub_end): 부분 ...
6월 19일 01:34에 게시됨
Codeforces Round 1029 Div.3 A-D번 문제 해설
A. False Alarm
문제의 지시에 따라 직접 구현하면 됩니다. 1이 등장하는 위치들을 기록하고, 인접한 1들 사이의 거리를 누적하여 총 소요 시간을 계산합니다.
정답 코드:
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tc;
cin >> tc;
while (tc--) {
...
6월 18일 01:45에 게시됨
스캔라인 알고리즘: 오프라인 2차원 문제 해결 기법
서론
이전에는 잘 이해하지 못해 문제를 풀 때마다 막혔지만, 최근 교육에서 이 개념을 다시 배우면서 깊이 이해하게 되어 이를 정리한 노트를 작성하게 되었습니다.
여기서 다루는 스캔라인은 더 정확히 말해 오프라인 2차원 수 문제를 의미하며, 한 차원은 스캔라인으로 관리하고 다른 차원은 자료구조로 관리하는 방식입니다.
개념
2차원 수 문제를 평면에 나타내면, 각 ...
6월 17일 18:53에 게시됨
USACO 2022년 11월 대회 문제 풀이: 외톨이 사진과 단어 맞추기
문제 1: 외톨이 사진(Lonely Photo)
농장주 존이 N마리의 소를 새로 샀다. 각 소는 게른지(Guernsey) 또는 홀스틴(Holstein) 품종이다. 소들이 한 줄로 서 있을 때, 길이가 3 이상인 모든 연속 구간에 대해 사진을 찍는다. 단, 구간 내에 특정 품종이 정확히 한 마리만 존재하는 "외톨이 사진"은 폐기처분한다. 폐기되는 사진의 총 개수를 구하라.
입력
첫 줄: N (소의 ...
6월 16일 01:00에 게시됨
버블모임과 플러그인 문제 해결
버블모임 문제
이 문제는 문자열을 처리하여 특정 패턴을 검사하는 문제입니다. 문자열 중 'o'와 'O'의 조합을 통해 새로운 문자열을 생성하는 로직이 핵심입니다.
코드 설명:
입력 문자열을 처리하는 함수는 다음과 같이 작동합니다:
스택 자료구조를 사용하여 문자를 임시 저장합니다.
'o'와 'O'의 조합을 통해 새로운 문자열을 형성합니다.
최종적으로 스택에 ...
6월 15일 22:36에 게시됨