2025/04 31

정적 전역 변수

malloc 구현하다가 포인터가 static으로 구현되어 있길래 정리하고 넘어가는 포스팅 static정적 전역 변수자신이 선언된 소스파일 안에서만 사용할 수 있음static으로 선언된 변수를 다른 파일에서 extern으로 가져다쓸 수 없음 → 컴파일(링크) 에러 발생즉, 전역 변수에 static을 붙이면 변수의 사용 범위를 파일 범위로 제한하는 효과가 있음//main.c#include extern int num1; //컴파일 에러. num1을 사용할 수 있는 범위는 print.c파일 내부int main(){ ... return 0;}//print.c#include static int num1 = 10; //static으로 선언했으므로 print.c파일 외부에서 사용 불가void print(){ ...}..

정글 2025.04.29

calloc에 대해서,,

이번 주차때 rbtree코드를 스스로 짜지 않았다. 알고리즘 책에 있는 의사 코드를 그대로 옮기고 해석하기만 했다.그래서 마지막 날인 오늘 rbtree 코드를 짜면서 신경쓰지 못 했던 부분에 대해 정리하고 이번 주를 마무리하려고 한다. 노드를 calloc으로 할당할 때의 이점?typedef struct node_t { color_t color; key_t key; struct node_t *parent, *left, *right;} node_t;typedef struct { node_t *root; node_t *nil; // for sentinel} rbtree;rbtree 구조체와rbtree의 노드에 해당하는 node_t 구조체가 주어진다.rbtree *new_rbtree(void) { ..

정글/알고리즘 2025.04.25

포인터.. 왜 쓸까?

내일 코어타임을 위해 포인터에 대해서 알아보았당Pointeraddress : the location of the memeory, where that memory livesvalue : the data stored at that location, what memory lives therepointer : the value of the address. It is pointing that location. int* px = &x; //px라는 정수형 포인터는 변수 x의 주소를 가리킴int y = *px; //y값은 px라는 포인터가 가리키는 값 *가 타입과 함께 쓰일 때는 해당 타입값을 가리키는 포인터*가 타입과 함께 쓰이지 않을 때는 역참조 (go and grab that value) why do we us..

정글 2025.04.18

Data-Structures Binary Search Tree Q4 - Post Order Iterative 풀이

오늘 코드 리뷰 상대가 스택 하나를 사용해 후위 순회를 구현한 코드를 올려주셔서 열심히 해석해보았다.덕분에 가장 어려웠던 문제를 이해할 수 있게 되었다 :D 문제 해석 : post-order(후위 순회)로 트리의 노드를 읽으시오.스택을 사용하시오 후위 순회란 :후위 순회 방문 순서는 다음과 같다.1. 왼쪽 서브트리2. 오른쪽 서브트리3. 자기 자신(root)이미지 출처:https://dongsik93.github.io/algorithm/2019/09/29/algorithm-theory-binarytree/ 손으로 그려보면 방문 순서를 도출해내는 건 쉽다. 하지만 코드로 구현하기가 어렵다.재귀로 풀면 점화식만 도출하면 되므로 쉬운데 스택을 쓰라니.. 구현 아이디어 떠올리기 :후위 순회의 성질을 잘 생각해..

정글 2025.04.17

Data-Structures Binary Search Tree Q1 - Level Order Traversal 풀이

* 4/17 발표를 위한 자료문제 해석 :트리가 주어졌을 때 노드들을 level별로 출력하라. 이 문제를 풀기 전에 두 가지 생각이 들었다.1. 왜 큐를 사용하라고 했나?2. 재귀호출로도 구현 가능? 이전 문제를 풀 때는 현재 노드의 자식 노드를 방문할 때 재귀 호출을 주로 사용했다.-> 자식 노드의 자식 노드로 깊이 탐색을 하여 base case에 다다르면 재귀 호출을 종료하는 식으로 top-down 구현 그런데 이번 문제에서는 너비 탐색을 해야 해서 재귀를 쓰면 안 된다.그럼 현재 노드의 자식 노드를 어떻게 방문?-> 큐에 같은 레벨의 노드들을 한꺼번에 넣어두고-> 큐에서 하나씩 꺼내면서 그 노드의 자식 노드를 또 다시 큐에 넣기-> 이 과정을 반복하면 큐의 FIFO 성질에 의해 같은 레벨의 노드들을..

정글/알고리즘 2025.04.16

[정글] c언어 특강

오늘 c언어 특강에서 들은 내용 간단 정리각 주제에 대해 자세하게 설명하기보다는 공부할 때 한 번 생각해볼만한 것들을 던져주신 것 같다.재귀 구현하노이탑 문제 점화식 : h(n) = 2*h(n-1) + 1 n개의 원판을 움직이기 위해서는1) n-1개의 원판을 1번 기둥에서 2번 기둥으로 옮기고2) 가장 큰 1개의 원판을 1번 기둥에서 3번 기둥으로 옮기고3) 다시 n-1개의 원판을 2번 기둥에서 3번 기둥으로 옮기는과정이 필요하기 때문이진 트리의 노드 개수를 구하는 문제참고) 트리 vs 그래프?트리는 사이클이 없고 모든 노드가 연결되어있는 그래프 점화식 : count(t) = count(t->left) + count(t->right) + 1struct{ struct* node left; struct..

정글 2025.04.16