C++ 메모리 모델: 코드·데이터·스택·힙 영역 완벽 분석

프로그램의 메모리 구조 C++에서 실행 중인 프로그램은 메모리를 네 개의 주요 영역으로 나누어 사용하며, 각 영역은 저장되는 데이터의 종류와 생명 주기가 다릅니다. 코드 영역: 실행할 기계어 코드가 저장됩니다. 전역 영역: 전역 변수, static 변수, 문자열 상수 등이 위치합니다. 스택 영역: 함수의 매개변수, 지역 변수 등이 자동으로 할당·해제됩니다. 힙 ...

8월 8일 11:41에 게시됨

반성적 그리디 알고리즘 완벽 정리

이 글은 반성적 그리디(Repentant Greedy) 알고리즘에 대한 학습 내용을 정리한 것입니다. 필자가 Div.3 대회에서 이 유형의 문제를 만난 후 깊이 공부하게 되었습니다. 반성적 그리디란? 일반적인 그리디 알고리즘은 선택을 되돌리지 않고 매 순간 최선이라고 판단되는 선택을 합니다. 하지만 이러한 방식은 지역 최적해(Local Optimum)에 빠져 전역 최적해(Global Opti ...

7월 31일 06:08에 게시됨

힙(Heap) 자료구조

목차 기초 지식 이진 트리 포화 이진 트리 완전 이진 트리 정의 인터페이스 (최소 힘 예시) 노드 삽입 - push 노드 삭제 - pop 힙 구축 - make_heap 힙 정렬 - heap_sort 요약 1. 기초 지식 이진 트리: n개의 노드로 구성된 트리 형태의 자료 구조로, 각 노드는 최대 두 개의 자식 노드를 가질 수 있습니다. 포화 이진 트리: 각 레벨의 노드 수가 최대로 채워져 ...

7월 19일 20:28에 게시됨

힙 자료구조의 원리와 구현: 완전이진트리를 활용한 우선순위 큐 기반

힙(Heap)이란? 힙은 완전이진트리의 형태를 가지며, 노드 간의 대소 관계가 특정 조건을 만족하는 자료구조이다. 배열 상에서 특정 규칙에 따라 요소들이 배치되며, 이를 통해 최댓값 또는 최솟값을 빠르게 접근할 수 있다. 힙은 두 가지 유형으로 나뉜다: 최대힙(Max Heap): 각 부모 노드의 값이 자식보다 크거나 같다. 최소힙(Min Heap): 각 부모 노드의 값이 자식 ...

7월 9일 23:21에 게시됨

반悔 힙 그리디를 활용한 최대 이익 매칭 알고리즘

문제 A: 사과 구매 기본적인 나눗셈 연산을 통해 해결할 수 있는 간단한 문제입니다. n, x = map(int, input().split()) result = n // x print(result) 문제 B: 소의 분류 문자열의 빈도수를 기준으로 다양한 경우의 수를 분석해야 합니다. from collections import Counter data = input().strip() frequency = sorted(Counter(data).values()) length = len(frequency ...

6월 6일 02:33에 게시됨

2020 CSP-J 복기 문제 해설

고등학생이지만 기초 그룹 문제를 풀어보며 완전 정답을 경험해보았다 T1 최적 분할 문제 링크 T1은 예상대로 간단했다. 홀수인 경우 -1을 출력하고, 짝수인 경우 큰 2의 제곱수부터 탐색한다. n이 해당 수보다 크면 해당 값을 출력하고 n에서 빼고, 해당 값을 반으로 나누어 계속한다. #include<iostream> using namespace std; int inputNumber; int main() { ...

5월 27일 03:15에 게시됨