C++ 표준 템플릿 라이브러리(STL) 알고리즘 핵심 정리 및 활용 가이드
1. 비변형 시퀀스 알고리즘 (Non-modifying Sequence Operations)
컨테이너의 원소를 직접 변경하지 않고 탐색하거나 검사하는 알고리즘들입니다.
1.1 탐색 (find 계열)
find(first, last, value): 특정 값과 일치하는 첫 번째 원소의 반복자를 반환합니다.
find_if(first, last, pred): 조건자(predicate)를 만족하는 첫 번째 원소를 찾습니다.
find_end(first1, last1, ...
7월 6일 03:14에 게시됨
2025년 2월 4일~9일 주차 문제 정리
주간 개요
이번 주는 생활 리듬이 불규칙하여 학습 효율이 저하되었고, 이를 개선하기 위해 환경을 변경하였다. 새로운 일정으로 인해 다음 주부터는 더 체계적인 학습과 경기 준비를 할 계획이다.
문제 해결 기록
SMU Winter 2025 Round 6
B. 스트리머의 밤
문제 요약: 여러 프로그램의 시작 및 종료 시간이 주어질 때, 전체 시간 내에 볼 수 있는 최대 프로그램 수를 ...
7월 1일 05:37에 게시됨
C++ 연관 컨테이너 std::set과 std::map의 활용
std::set: 유일한 요소의 정렬된 집합
std::set은 중복을 허용하지 않는 키(Key)들의 집합을 관리하는 컨테이너입니다. 내부적으로 주로 레드-블랙 트리(Red-Black Tree) 구조로 구현되어 있어, 삽입, 삭제, 탐색 작업 시 O(log N)의 시간 복잡도를 보장합니다. 만약 중복된 값을 허용해야 한다면 std::multiset을 대신 사용하면 됩니다.
주요 제어 메서드
...
6월 27일 05:56에 게시됨
C++에서의 STL 알고리즘 활용과 핵심 패턴
비수정형 시퀀스 알고리즘
이러한 알고리즘은 컨테이너 내 요소를 변경하지 않고 조작합니다. 주로 탐색, 카운팅, 조건 검사에 사용됩니다.
요소 탐색: find 계열 함수
std::find: 지정된 값과 일치하는 첫 번째 요소를 반환합니다.
std::find_if: 조건을 만족하는 첫 번째 요소를 찾습니다.
std::find_end: 특정 하위 시퀀스가 마지막으로 나타나는 위치를 반환합 ...
6월 24일 20:32에 게시됨
C++ 표준 라이브러리(STL) 알고리즘 활용 가이드
1. 비수정(Non-modifying) 시퀀스 알고리즘
이 범주의 알고리즘은 대상 컨테이너의 요소 값을 변경하지 않으면서 정보를 검색합니다.
1.1 요소 찾기: find, find_if, find_end
find(begin, end, value): 주어진 범위에서 특정 값과 일치하는 첫 번째 요소를 찾아 해당 위치의 이터레이터를 반환합니다. 찾지 못하면 end 이터레이터를 반환합니다.
find_if(begin, ...
6월 24일 17:29에 게시됨
C++ STL 알고리즘 종합 가이드
1. 비수정 시퀀스 알고리즘
이 알고리즘들은 작업하는 컨테이너의 요소를 변경하지 않습니다.
1.1 find와 find_if
find(begin, end, value): value와 같은 첫 번째 요소를 찾아 반복자를 반환합니다. (찾지 못하면 end 반환)
find_if(begin, end, predicate): 조건자(predicate)를 만족하는 첫 번째 요소를 찾습니다.
find_end(begin, end, sub_begin, sub_e ...
6월 21일 02:44에 게시됨
임베디드 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에 게시됨
C++ STL 알고리즘 완전 정복
1. 비수정 시퀀스 알고리즘
이 알고리즘들은 컨테이너의 요소를 변경하지 않고 조작합니다.
1.1 find 및 find_if
find(begin, end, value): value와 첫 번째로 일치하는 요소를 찾아 반복자를 반환합니다 (찾지 못하면 end 반환).
find_if(begin, end, predicate): 조건자를 만족하는 첫 번째 요소를 찾습니다.
find_end(begin, end, sub_begin, sub_end): 서브시퀀스 ...
6월 15일 00:03에 게시됨
C++ 핵심 개념 정리: 포인터, STL 컨테이너 및 활용법
C++ 학습 시 자주 사용되는 핵심 개념들을 코드 예제와 함께 정리합니다.
기본 입출력 및 배열 초기화
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 110;
int d[N]; // 전역 변수
int main() {
int n;
cin >> n;
cout << n * 2 << endl;
// memset을 사용한 ...
6월 9일 01:15에 게시됨
Xorshift 기반 난수 배열 생성과 선형 시간 선택 알고리즘 활용
알고리즘 대회에서 자주 등장하는 난수 배열 생성 방식과 std::nth_element를 활용한 효율적인 문제 해결 기법을 살펴본다. 특히 대용량 데이터에서 순위 기반 쿼리를 처리하는 방법이 핵심이다.
Xorshift RNG 구현
다음은 경량 의사난수 생성기(Pseudo-Random Number Generator)의 한 종류인 xorshift 계열 구현이다. 세 개의 상태 변수를 이용하며, 비트 연산으로 빠르 ...
6월 8일 21:35에 게시됨