본문 바로가기
반응형

전체 글68

malloc과 free: C 언어 동적 메모리 관리의 핵심 개념 🚀 살펴볼 내용🚀C 언어에서 메모리 관리는 매우 중요한 개념입니다. 특히 동적 메모리 할당(dynamic memory allocation) 을 이해하면 더 효율적이고 유연한 프로그램을 작성할 수 있습니다.  이 글에서는 malloc과 free를 중심으로 동적 메모리 관리의 핵심 개념을 살펴보겠습니다. 💡본 내용1. 동적 메모리 할당이란? 🤔C 언어에서 변수를 선언하면, 컴파일러는 해당 변수에 필요한 메모리를 자동으로 할당합니다.  하지만 프로그램 실행 도중 필요한 메모리 크기를 동적으로 결정해야 하는 경우가 많습니다.  예를 들어, 사용자 입력에 따라 크기가 다른 배열을 생성해야 할 수도 있죠.  이러한 경우 동적 메모리 할당을 사용합니다. 동적 메모리 할당을 하면 실행 시간(runtime) 중에 메모.. 2025. 3. 26.
C 언어 필수 문법 10가지, 이것만 알면 기본기 끝! 🚀 🚀C 언어 필수 문법 10가지🚀C 언어는 프로그래밍의 기초를 배우기에 가장 적합한 언어 중 하나입니다.  하지만 처음 배우는 사람들에게는 다소 어렵게 느껴질 수 있죠.  그래서 오늘은 C 언어를 학습하는 데 꼭 필요한 필수 문법 10가지를 정리해보았습니다.  이 글을 따라가며 차근차근 익힌다면 C 언어의 기본을 확실하게 다질 수 있을 거예요! 😊1. 변수와 데이터 타입 📝변수는 데이터를 저장하는 공간입니다. C 언어에서 사용할 수 있는 대표적인 데이터 타입은 다음과 같습니다.int a = 10; // 정수형float b = 3.14; // 실수형char c = 'A'; // 문자형int : 정수를 저장하는 타입float : 실수를 저장하는 타입char : 문자를 저장하는.. 2025. 3. 25.
다익스트라 🤔 다익스트라 란?그래프에서 특정 노드에서 다른 노드들의 최단 거리를 구하는 알고리즘이다.이때, 에지는 모두 양수의 값을 가져야하고, 시간 복잡도는 O(에지수log(노드수)) 이다.👉 다익스트라 수행 방식▣ 오류!!!위 그림에서는 인접한 노드를 큐에 넣어 순서대로 수행했는데, 다익스트라 알고리즘에서는 가중치가 작은 값을 기준으로 큐에 넣어주어야 한다.따라서, 우선 순위 큐를 활용하여 에지 가중치를 기준으로 정렬되어 수행해주어야 한다.수행 방식은 동일하지만, 에지 가중치를 기준으로 다익스트라 알고리즘이 수행되어야 할 것!!!! (인접한 노드 기준 xxxxx)✔️ 다익스트라 수행 과정그래프를 인접 리스트로 구현한다.방문 리스트와 최단 거리 리스트를 초기화한다.이때, 최단 거리 리스트에서는 출발 노드는 0.. 2023. 3. 28.
위상 정렬 🤔 위상 정렬 이란?사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘이다.항상 같은 순서로 정렬되지 않는다.사이클이 존재하면 안되며, 시간 복잡도는 O(노드의 수 + 에지의 수) 이다.👉 위상 정렬 수행 방식✔️ 위상 정렬 연산 과정현재 그래프는 사이클이 없는 상태이며, 각 노드의 인접 리스트를 저장해준다.인접한 노드의 진입 차수 리스트에 1씩 더해준다.이때, 진입 차수는 자기 자신을 가리키는 에지의 수를 의미한다.인접 리스트를 바탕으로 모든 진입 차수 리스트가 업데이트 되었다면,진입 차수 리스트에서 데이터가 0인 노드를 큐에 저장한다.이후 큐에 저장된 데이터를 하나씩 가져와 인접 리스트에 있는 노드의 진입 차수를 다시 1씩 뺀다.이때 진입 차수가 0이 되면 해당 인접 노드를 큐에 넣어준다.3.. 2023. 3. 27.
유니온 파인드 🤔 유니온 파인드 란?여러 노드가 있을 때, 특정 2개의 노드를 연결해 1개의 집합으로 묶는 union 연산과 특정 노드가 같은 집합에 속해 있는지를 확인하는 find 연산으로 구성된 알고리즘이다.union 연산 : 두 노드가 속해있는 집합을 1개로 합집합하는 연산이다.find 연산 : 특정 노드가 속한 집합의 대표 노드를 찾아서 반환해주는 연산이다.👉 유니온 파인드 수행 방식union 연산✔️ union 연산 과정각 노드가 연결되어 있지 않고 자기 자신이 대표 노드로 초기화된다.union(1,5), union(3,6) 과정을 거쳐 5와 6 노드를 각각의 대표 노드로 업데이트 해준다.union(5,6) 과정에서 각 노드의 대표 노드인 1과 3을 union(1,3) 연산을 수행한다.노드 3을 노드 1 .. 2023. 3. 26.
그래프의 표현 📌 2차원 리스트를 생성할 때 주의사항리스트를 객체로 생성하는 방법lst = [[0 for col in range(4)] for row in range(3)]연산자를 통해 생성하는 방법 lst = [[0] * 4] * 3연산자를 통해 생성하게 될 경우 특정 값을 변경할 때, 다른 원소의 값도 함께 변경될 수 있다.2차원 리스트를 생성할 때는 되도록이면, 리스트를 객체로 생성하는 방법을 적용하여 만들어준다.✍️에지 리스트리스트에 출발 노드와 도착 노드를 저장하여 에지를 표현한다.가중치가 있는 경우에는 출발 노드, 도착 노드, 가중치를 에지에 표현할 수 있다.에지 리스트는 노드 사이의 최단 거리를 구하는 벨만-포드나 최소 신장 트리를 찾는 크루스칼 알고리즘에 사용된다.✍️인접 행렬2차원 리스트 자료구조를 .. 2023. 3. 26.
반응형