전체 글
해시 테이블(Hash Table) 개념 정리 – 왕초보도 바로 이해되는 자료구조 노트(:
해시 테이블(Hash Table) 개념 정리 – 왕초보도 바로 이해되는 자료구조 노트(:
2025.04.151. 해시 테이블이란 무엇인가프로그래밍에서 데이터를 저장하고 꺼내는 일은 매우 중요하다.이때 자주 등장하는 자료구조 중 하나가 해시 테이블(Hash Table)이다.해시 테이블은 데이터를 빠르게 찾기 위한 자료 구조다.보통 리스트(배열), 연결 리스트, 트리 같은 구조들은 O(n), O(log n) 정도의 시간이 걸린다.하지만 해시 테이블을 사용하면, 이론적으로 O(1)의 시간으로도 데이터를 찾을 수 있다.검색 속도가 매우 빠르기 때문에, 많은 양의 데이터를 다루는 프로그램에서 자주 사용된다.프로그래머에게는 거의 필수 개념이라고 할 수 있다. 2. 아주 쉽게 말해보자 – 해시 테이블을 도시락통에 비유하면?조금 더 쉬운 이해를 위해 비유를 들어보자.해시 테이블을 '도시락 정리함'이라고 생각하면 된다.전체 ..
C언어로 이진 검색 트리 구현하기 | 트리 자료구조 개념부터 코드까지
C언어로 이진 검색 트리 구현하기 | 트리 자료구조 개념부터 코드까지
2025.04.13🌳 C언어로 트리(Tree) 구조 이해하기연결 리스트보다 한 단계 더 나아간 자료구조연결 리스트를 이용하면 데이터를 유연하게 연결할 수 있었다. 하지만 각 노드가 한 노드만을 가리키는 1차원적인 구조였기 때문에, 복잡한 구조를 표현하거나 빠른 검색이 필요할 때는 제한이 있었다.그래서 등장한 것이 트리(Tree)다. 트리는 연결 리스트의 연장선에서 만들어졌지만, 각 노드가 여러 개의 노드를 가리킬 수 있도록 확장된 구조다. 이번엔 트리의 개념과 함께, C언어로 간단한 이진 검색 트리(Binary Search Tree)를 구현해보았다. Goals트리(Tree)의 구조를 이해하고 직접 구현할 수 있다.연결 리스트와 트리 구조의 차이점 및 장단점을 설명할 수 있다. 핵심 개념트리(Tree)루트(Root)이진 ..
C언어 연결 리스트 실습: node 구조체와 포인터 이해하기
C언어 연결 리스트 실습: node 구조체와 포인터 이해하기
2025.04.13🧠 C언어 연결 리스트 직접 구현해보기 (feat. →, while문, node 구조체)이번에는 실제로 연결 리스트를 직접 구현해보았다. 낯선 포인터와 ->, malloc, while 같은 문법들이 등장하지만, 하나하나 뜯어보면 이해할 수 있다:)ps. stdlib.h가 왜 필요한지 다시한번, 짚고 갈것(: 🎯 Goals연결 리스트를 직접 구현할 수 있다.구조체와 포인터를 활용해 노드를 만들고 연결할 수 있다.메모리를 동적으로 할당하고 해제할 수 있다. 📘 핵심 키워드연결 리스트 (Linked List)구조체 (struct)포인터 (pointer)동적 메모리 할당 (malloc)메모리 해제 (free)→ 연산자stdlib.h, NULL, while, for 📦 stdlib.h는 왜 필요한가?연결 ..
연결 리스트란? 배열의 한계를 넘는 자료구조 입문 정리
연결 리스트란? 배열의 한계를 넘는 자료구조 입문 정리
2025.04.13🧶 연결 리스트: 도입 — 배열을 넘어서배열을 쓰면서 한 번쯤 이런 생각 해봤을지도 모른다.“값 하나만 더 넣을 수 있으면 좋을 텐데...”그런데 배열은 한 번 크기를 정하면, 메모리 상에서 ‘연속된 공간’에 데이터를 넣기 때문에 중간에 크기를 키우기 힘들다.이럴 때 훨씬 더 유연하게 데이터를 저장할 수 있는 방식이 있다.바로 연결 리스트(Linked List) 라는 자료구조다.이번 글에서는 연결 리스트의 개념을 처음부터 천천히 이해해보려고 한다.무엇보다 중요한 건:“왜 이런 구조가 필요한가?”이걸 느끼는 것이다. 데이터 구조란 무엇인가컴퓨터는 모든 데이터를 메모리에 저장한다.그런데 이걸 단순히 쌓아두는 게 아니라, 어떤 식으로 정리하고 연결하느냐에 따라 효율이 달라진다.이걸 데이터 구조(Data St..
동적 배열 크기 변경: malloc과 realloc로 메모리 할당하기
동적 배열 크기 변경: malloc과 realloc로 메모리 할당하기
2025.04.13배열 크기 늘리기 – malloc, realloc 공부기록 🧠배열은 한 번 크기를 정하면 끝이다.처음에 int arr[3]; 이렇게 선언하면,3칸짜리 사물함이 딱 정해지는 거다.문제는...프로그래밍을 하다 보면 처음에 3칸이면 될 줄 알았는데,중간에 4칸, 10칸, 100칸 필요해지는 경우가 너무 많다.이럴 땐 어떻게 해야 할까?이미 크기가 정해진 배열의 공간은 늘릴 수 없다.그럼 진짜 늘리고 싶을 땐?→ 동적 메모리 할당을 써야 한다. goals동적 배열의 크기를 바꾸는 코드를 써본다malloc + realloc이 뭘 해주는지 직접 확인한다진짜로 배열이 "늘어났다"는 게 무슨 의미인지 체감해본다 처음엔 malloc + 복사로 처리처음엔 그냥 배열처럼 선언하고 쓰다가,더 큰 배열이 필요해질 때는 새로운..
쇼펜하우어, 당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까: 고통을 넘어선 삶의 철학적 통찰
쇼펜하우어, 당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까: 고통을 넘어선 삶의 철학적 통찰
2025.04.11쇼펜하우어 철학, 고통과 삶을 바라보는 새로운 시선인생은 늘 불편한 질문들로 가득하다. 고통, 욕망, 죽음, 자유의지… 이러한 주제들은 우리가 일상 속에서 피하고 싶은 것들이기도 하지만, 동시에 가장 중요한 진리들이기도 하다. 쇼펜하우어의 『당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까』는 그 불편한 질문들을 정면으로 다룬다. 고통을 주제로 삶의 본질을 탐구하며, 우리에게 깊은 성찰을 강요하는 이 책에서, 쇼펜하우어는 단순히 철학적 사고를 넘어서, 고통을 어떻게 받아들이고 다룰 것인지에 대한 실용적인 통찰을 제공한다.고통의 필연성: 고통을 피할 수 없다"인생은 고통의 연속". 그는 인생의 본질을 고통과 욕망에서 비롯된 끊임없는 갈등으로 보고 있다. 우리는 끊임없이 무엇인가를 추구하며, 그것을 얻기 ..
아비투스: 품격 있는 삶을 위한 7가지 자본의 힘 - 부와 성공을 결정짓는 인간적 가치
아비투스: 품격 있는 삶을 위한 7가지 자본의 힘 - 부와 성공을 결정짓는 인간적 가치
2025.04.10인간의 품격은 태어날 때 정해지는 것이 아니다. 후천적으로 쌓는 습관, 사고방식, 관계가 삶의 궤적을 바꾼다. 도리스 메르틴의 『아비투스』는 단순한 자기계발서를 넘어, 사회적 계층을 넘나드는 실질적 전략을 제시한다. 이 책은 "타인과 나를 구별 짓는 취향과 습관"을 아비투스라 정의하며, 이를 구성하는 7가지 자본을 통해 진정한 성공을 설계한다.아비투스의 본질: 제2의 본성이 되다아비투스는 사회문화적 환경이 길러낸 제2의 본성이다. 선천적 재능이 아닌 후천적 노력으로 완성되는 개성이다. 상류층과 하류층의 차이는 단순히 경제적 격차가 아니라, 이 아비투스에서 비롯된다."타인과 나를 구별 짓는 취향, 습관, 아우라! 사회문화적 환경에 의해 결정되는 계층의 결과이자 표현"이 문장은 아비투스의 핵심을 관통한다. ..
포인터와 malloc 함수 이해하기
포인터와 malloc 함수 이해하기
2025.04.09오늘도 여김없이 퇴근 후 프로그래밍 공부할 수 있는 이 시간이 소중하다🩵...Finallyy! 자료구조 챕터로 들어왔다. 그 전에, 이전에 배운내용을 잠깐 복습하는 시간을 가져봐야지-- 바로, 포인터와 malloc 함수다:) 이 두 개념은 C 언어에서 매우 중요하며, 특히 메모리를 동적으로 할당하고 관리하는 데 필수적이다. 그래서 오늘은 포인터와 malloc 함수의 개념을 간단히 설명하고, 실수하기 쉬운 부분을 실제 코드 예시를 통해 정리해 보고자한다✨.포인터와 malloc 함수: 기초 개념포인터란?포인터는 "주소를 저장하는 변수"다. 즉, 변수의 값이 아니라 그 값이 저장된 메모리 주소를 저장하는 변수이다. 예를 들어, 정수형 변수를 선언하고 그 변수의 값을 포인터로 접근하려면 아래와 같은 방식으로 ..
알랭 드 보통의 불안 - 타인의 시선에서 벗어나 불안을 극복하는 방법
알랭 드 보통의 불안 - 타인의 시선에서 벗어나 불안을 극복하는 방법
2025.04.09알랭 드 보통의 『불안』은 현대인들이 겪는 불안의 본질을 철학적, 사회적 관점에서 탐구하고 그 해소 방법을 제시하는 책이다. 불안은 누구에게나 피할 수 없는 감정이다. 특히 오늘날 우리는 끊임없이 타인의 시선과 기대 속에서 자신을 평가하며, 그에 따라 불안을 느낀다. 이 책은 불안을 구체적으로 이해하고, 그것을 어떻게 다룰 수 있는지에 대한 깊은 통찰을 제공한다.불안의 본질: 타인의 시선에서 비롯된 감정알랭 드 보통은 우리가 겪는 불안의 근원을 타인의 시선에서 찾는다. 내면에서 비롯된 불안이 아니라, 외부의 평가—즉, ‘세상이 나를 어떻게 보는가’라는 두려움에서 출발한다. 그가 제시하는 다섯 가지 불안의 원인은 다음과 같다:사랑 결핍: 사랑받지 못할 것이라는 두려움.속물근성: 물질적 성공과 지위로 사람을..
C 언어로 JPEG 파일 판별하기 - 파일 시그니처를 읽는 법
C 언어로 JPEG 파일 판별하기 - 파일 시그니처를 읽는 법
2025.04.08우리가 컴퓨터에서 다루는 파일은 텍스트, 이미지, 영상 등 다양하다. 이 중 JPEG 파일은 이미지 파일 형식 중 하나다. 그런데 신기하게도, JPEG 파일의 시작 부분에는 "나는 JPEG이야!"라는 표시 같은 특별한 코드가 숨어 있다. 이걸 시그니처(signature) 라고 부른다.이번에는 이 시그니처를 확인해서, 특정 파일이 JPEG인지 판별하는 아주 간단한 프로그램을 만들어보았다(:파일이 JPEG인지 확인하는 C 코드#include int main(int argc, char *argv[]){ if (argc != 2) { return 1; } FILE *file = fopen(argv[1], "r"); if (file == NULL) { re..
비타민 D3 효능과 올바른 섭취법
비타민 D3 효능과 올바른 섭취법
2025.04.08비타민 D3의 모든 것: 건강 효능부터 올바른 섭취법까지왜 비타민 D3일까?햇빛 비타민으로 불리는 비타민 D3는 현대인의 필수 영양소로 떠오르고 있다. 실내 생활 증가와 자외선 차단제 사용이 일상화되면서 결핍 위험이 커지고 있다. 하지만 비타민 D3는 뼈 건강부터 면역력까지 여러 중요한 기능을 돕기 때문에 제대로 섭취하는 것이 정말 중요하다. 비타민 D3를 제대로 보충하면, 일상에서 더 많은 건강 혜택을 누릴 수 있다. 1. 비타민 D3 vs D2: 무엇이 다르지?비타민 D에는 D2와 D3가 있는데, 가장 중요한 차이점은 흡수율과 효과적인 체내 활성화 과정에 있다.D2 (에르고칼시페롤): 주로 식물에서 얻을 수 있지만 체내에서 활성화되는 과정에서 시간이 더 걸린다.D3 (콜레칼시페롤): 동물성 원료(생선..
나는 나의 스무 살을 가장 존중한다: 삶의 전환점을 통해 배운 성공과 행복의 비밀
나는 나의 스무 살을 가장 존중한다: 삶의 전환점을 통해 배운 성공과 행복의 비밀
2025.04.08스무 살은 누구에게나 특별한 시기다. 이 시기는 꿈을 꾸고, 새로운 도전을 시작하며, 인생의 방향을 정하는 중요한 시간이다. 이하영 작가의 『나는 나의 스무 살을 가장 존중한다』는 바로 이 시기를 돌아보며 자신만의 성공과 행복을 어떻게 찾았는지에 대한 이야기를 담고 있다. 스무 살, 나만의 시간이 되다작가는 스무 살을 가장 존중한다고 말한다. 스무 살은 꿈을 꾸고 열정을 쏟을 수 있는 시간이며, 그 시기의 노력과 생각이 오늘의 자신을 만들었다는 것이다. "스무 살의 내가 그토록 원했던 삶이 바로 오늘이다"라고 강조하며, 그 시절의 간절한 마음이 현재의 삶을 이루었다고 말한다. 이 말은 단순히 과거를 회상하는 것이 아니라, 당시의 꿈과 열정이 현재의 성취와 어떻게 연결되었는지를 보여준다.스무 살은 누구에게..