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에 게시됨