C++ 메모리 모델: 코드·데이터·스택·힙 영역 완벽 분석
프로그램의 메모리 구조
C++에서 실행 중인 프로그램은 메모리를 네 개의 주요 영역으로 나누어 사용하며, 각 영역은 저장되는 데이터의 종류와 생명 주기가 다릅니다.
코드 영역: 실행할 기계어 코드가 저장됩니다.
전역 영역: 전역 변수, static 변수, 문자열 상수 등이 위치합니다.
스택 영역: 함수의 매개변수, 지역 변수 등이 자동으로 할당·해제됩니다.
힙 ...
8월 8일 11:41에 게시됨
스택과 큐를 활용한 자료 구조 문제 해결 전략
스택과 큐는 컴퓨터 과학에서 가장 기본적이고 널리 사용되는 선형 자료 구조입니다. 이 두 가지 구조는 데이터를 저장하고 접근하는 방식에 있어 명확한 차이를 가지며, 다양한 알고리즘 문제 해결에 필수적인 도구로 활용됩니다. 스택은 '후입선출(LIFO: Last In, First Out)' 원칙을 따르며, 큐는 '선입선출(FIFO: First In, First Out)' 원칙을 따릅니다. 특히 스택은 ...
7월 25일 13:02에 게시됨
스택 기반 배열 구현과 단조 창문 알고리즘
-1은 빈 리스트를 의미
head는 머리 노드의 인덱스
e[]는 특정 위치의 값, 인덱스는 노드의 위치
ne[]는 다음 포인터
idx는 현재까지 사용된 노드의 인덱스
단일 연결 리스트
단일 연결 리스트에서 idx는 삽입된 순서가 아니라, 현재까지 할당된 노드 번호를 나타냄
#include <iostream>
using namespace std;
const int N = 100010;
int head, e[N], ne[N], idx ...
7월 17일 02:57에 게시됨
스택과 큐 자료구조 구현
스택과 큐는 컴퓨터 과학에서 가장 기본적인 자료구조 중 하나로, 각각 후입선출(LIFO)과 선입선출(FIFO) 특성을 가집니다. 이번 글에서는 배열 기반과 연결 리스트 기반의 두 가지 구현 방법을 모두 다룹니다.
스택(Stack) 자료구조
스택은 후입선출(LIFO) 원칙을 따르는 자료구조로, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다.
배열 기반 스택 구현
/* 스택 헤 ...
7월 7일 20:13에 게시됨
스택과 재귀: 385, 341, 394 문제 해결
385. 미니 구문 분석기 (중간)
문자열 s가 정수 중첩 리스트를 나타낸다고 가정할 때, 이를 구문 분석하는 파서를 구현하고 파싱 결과인 NestedInteger를 반환하세요.
리스트의 각 요소는 정수 또는 정수 중첩 리스트일 수 있습니다.
예제 1:
<strong>입력:</strong> s = "324",
<strong>출력:</strong> 324
<strong>설명:</s ...
7월 2일 04:22에 게시됨
스택 기반 알고리즘 문제 분석 및 해결
문제 1: 소수의 숫자 게임 (P1427)
스택의 후입선출(LIFO) 특성을 활용하여 입력된 숫자를 역순으로 출력하는 문제. 초기 코드에서 size() 호출 후 pop()을 수행하면서 크기 계산 오류가 발생했다.
#include <bits/stdc++.h>
using namespace std;
stack<int> num_stack;
int main() {
int value;
while (cin >> value && value != 0) {
num ...
6월 21일 23:38에 게시됨
버블모임과 플러그인 문제 해결
버블모임 문제
이 문제는 문자열을 처리하여 특정 패턴을 검사하는 문제입니다. 문자열 중 'o'와 'O'의 조합을 통해 새로운 문자열을 생성하는 로직이 핵심입니다.
코드 설명:
입력 문자열을 처리하는 함수는 다음과 같이 작동합니다:
스택 자료구조를 사용하여 문자를 임시 저장합니다.
'o'와 'O'의 조합을 통해 새로운 문자열을 형성합니다.
최종적으로 스택에 ...
6월 15일 22:36에 게시됨
스택과 큐의 비교 및 구현
스택과 큐는 컴퓨터 과학에서 널리 사용되는 두 가지 기본적인 데이터 구조입니다. 이 글에서는 이 두 데이터 구조에 대해 자세히 설명하고 C++ 예제 코드를 통해 구현 방법을 보여드리겠습니다.
스택 (Stack)
스택은 후입선출(LIFO, Last In First Out) 특성을 가진 데이터 구조로, 한쪽 끝(스택 상단)에서만 삽입과 삭제 연산이 가능합니다. 스택의 기본 연산은 다음과 ...
6월 2일 22:33에 게시됨
C#에서의 메모리 관리와 데이터 저장 위치 분석
CLR 환경에서의 메모리 구조
.NET Common Language Runtime(CLR) 위에서 실행되는 C# 애플리케이션은 논리적으로 두 가지 주요 메모리 영역으로 나뉩니다: 스택(Stack)과 힙(Heap, 즉 관리 힙). 이들 각각은 데이터의 종류와 수명에 따라 다르게 사용됩니다.
힙 (관리 힙)
동적 할당: 객체 인스턴스 및 복잡한 데이터 구조를 위한 동적 메모리 ...
6월 2일 00:44에 게시됨
AGC005 문제 해설
A - STring
스택을 이용한 시뮬레이션으로 해결합니다. 문자열을 순회하면서 'S'는 스택에 추가하고, 'T'가 등장할 때 스택 상단이 'S'이면 제거합니다. 최종적으로 남은 스택 크기가 정답입니다.
#include <iostream>
#include <stack>
using namespace std;
int main() {
string str;
cin >> str;
stack<char> stk;
for (char c ...
5월 31일 02:30에 게시됨