기타
-
[SW 정글 39일차] Process를 공부하면서 static변수까지기타/SW 사관학교 정글 2021. 9. 10. 00:21
오늘부터는 malloc을 구현하는 주차가 시작됐는데 컴퓨터시스템 책을 보자마자 프로세스라는 단어를 마주했고 사실 프로세스, 쓰레드는 운영체제를 공부하면서 많이 접했지만 둘의 차이점을 설명해보라고 하면 잘할 자신은 없었다. 그래서 이번 기회에 제대로 알아보고 정리해보려고 한다. 그리고 이제는 여기에 글을 쓰지 않고 paper에 정리한 것을 사진으로 올릴려고 한다. 나는 공부를 하면 paper에 작성하면서 하는 스타일인데 또 다시 보면서 여기에 쓰려고 하니 시간 효율성이 떨어진다고 느꼈다. 물론 장점은 복습을 한 번 더 한다는 것이지만 현재 단점을 이길만한 장점이지는 않다고 생각했다. [오늘의 나는 어땠을까?] 오늘은 저번 주 목요일부터 공부하고 구현했던 Red-Black Tree에서 기존의 header 파..
-
SW 정글 5주차 회고기타/SW 사관학교 정글 2021. 9. 9. 23:40
[5주차 회고] 2021년 09월 09일 목요일, 5주차가 마무리 되는 날이고 5주차는 전체적으로 어땠는지 이 글을 쓰면서 돌아보려고 한다. 5주차는 정글에 들어오고나서 정말 개인적으로 만족스러운 한 주였다. 일단은 새로운 자료구조를 내 것으로 만들었다는 것이고 두 번째는 너무나도 만족스러운 팀활동이 이루어졌다고 생각해서이다. 내가 만족스럽다고 느낀 이유는... 일단은 같이 기숙사에서 지내고 있는 룸메이트와 처음으로 같은 조가 되었다. 같은 조가 되기 이전에 룸메이트에 대한 다른 동료들의 생각은 정말 머리가 좋고 같은 조가 되면 배울 점이 많다는 것이였다. 같은 조를 해본 적이 없고 사실 룸메이트여도 방에서 보내는 시간이 완전 없다고 볼 정도이기에 같은 조가 되면 어떤지 궁금했다. 같은 조가 되보니 정말..
-
[SW 정글 38일차] calloc과 realloc부터 시작해서 git 정리까지기타/SW 사관학교 정글 2021. 9. 9. 02:22
오늘은 레드블랙트리 구현을 마치고 복습과 구현이라는 목표를 이루기 위해 궁금했던 것이나 복습을 해야되는 부분을 알아보며 얻은 것들을 정리하려고 한다. 1. malloc과 calloc, realloc malloc에 대해서는 아래의 글에서 설명한 바 있다. https://straw961030.tistory.com/220 [SW 정글 35일차] 동적 메모리 할당 (링크드리스트, 이진탐색트리) 오늘은 C언어를 배우고 c언어를 이용해서 연결리스트, 이진탐색트리를 구현하면서 상용한 동적 메모리 할당과 잘못 사용하면 발생할 수 있는 메모리 누수에 대해 정리해보려고 한다. 우리는 배 straw961030.tistory.com 동적메모리할당을 위해 사용되는 함수가 malloc만 있는 줄 알았지만 찾아보니 calloc, ..
-
[SW 정글 37일차] 레드블랙트리 삽입, 삭제기타/SW 사관학교 정글 2021. 9. 8. 14:15
오늘은 이틀동안 공부하고 직접 구현한 레드블랙트리의 삽입과 삭제 기능에 대해 정리해보려고 한다. 삽입과 삭제.... 처음 봤을 때에는 '내가 이걸 어떻게 코드를 짜?'였지만 계속 반복해서 보다보니 이해가 되면서 다른 사람들의 코드를 참고하여 직접 구현한 코드를 보게 되었다. 1. 레드블랙트리의 삽입원리 레드블랙트리에서 삽입은 일단은 이진탐색트리와 똑같이 새로운 노드의 키값에 따라 자신의 위치를 찾아가는 것을 동일하다. 이진탐색트리와 같은 원리로 일단은 노드를 삽입한 후에 레드블랙트리의 특성을 위반하지 않도록 fixed-up하는 방식이 있고 다른 방법은 삽입을 하는 과정에서 계속해서 자신을 위치를 찾으면서 내려갈 때마다 특정 조건 상황에 맞딱뜨렸을 때 fixe-up하는 방식이 있다. 나는 첫번째 방식을 택..
-
[SW 정글 36일차] 레드블랙트리 개념 익히기기타/SW 사관학교 정글 2021. 9. 7. 03:12
오늘은 이번 주차 본 과제인 레드블랙트리에 대해 공부를 시작했다. 이진탐색트리의 단점은 보완하는 정말 신기한 자료구조이다. Introduction to Algorithms를 2~3번 읽고나니 이해가 됐고 새로운 것을 배워서 뿌듯했다. 1. 균형 이진 탐색 트리란? 균형 이진 탐색 트리란 노드의 삽입과 삭제가 일어나는 경우에 자동으로 각 노드에서의 높이를 균형있게 유지지키는 것이다. 아래의 그림은 기존의 이진 탐색 트리의 문제가 발생하는 경우이다. 단순히 이진 탐색 트리에 값이 오름차순 혹은 내림차순으로 삽입되는 경우에 한쪽으로 치우치는 트리가 나올 수 있다. 이렇게 되면 이진 탐색 트리의 강점 중 하나인 탐색 시 시간복잡도가 O(logn)이라는 것이 O(n)이 되고 선형리스트와 다를 바가 없어진다. 그래..
-
[SW 정글 35일차] 동적 메모리 할당 (링크드리스트, 이진탐색트리)기타/SW 사관학교 정글 2021. 9. 6. 02:40
오늘은 C언어를 배우고 c언어를 이용해서 연결리스트, 이진탐색트리를 구현하면서 상용한 동적 메모리 할당과 잘못 사용하면 발생할 수 있는 메모리 누수에 대해 정리해보려고 한다. 우리는 배열을 배우면서 우리가 데이터를 저장하고자 할 때 필요한 메모리의 양을 확정적으로 알려줘야 했다. 그 이유는 우리가 정적으로 생성하는 배열은 메모리 영역 중 stack 영역의 메모리에 저장되고 stack에서 메모리는 컴파일 시점에 결정된다. 즉, 사용자가 '이만큼 원해요'를 컴파일러에게 반드시 알려줘야한다는 것이다. 아래의 그림은 메모리 구조이다. 정적으로 메모리 할당을 해야한다면 항상 고정적으로 메모리의 양을 알려줘야하기때문에 비효율적인 경우가 생길 수 있다. 그냥 그때 그때 우리가 원하는 만큼만 받아서 사용하면 편리할텐데..
-
[SW 정글 34일차] 알수록 신기한 C언어기타/SW 사관학교 정글 2021. 9. 5. 02:19
오늘은 목요일에 5주차 과제를 부여받고 나서 계속 공부해오던 C언어에 대해 정리해보려고 한다. 특별히 주제를 잡아서 정리하기 보다는 오늘 공부하면서 python에서는 느낄 수 없었던 C언어의 매력에 빠지게 된 요소들을 정리하려고 한다. 1. 포인터의 연산 우선, 포인터에 대한 내용을 정리한 글에서도 말했지만 포인터도 일반적인 변수처럼 type을 가지고 있다고 했다. #include int main() { int *pointer; int a = 5; pointer = &a; } 이렇게 코드를 짜면 pointer라는 int형 포인터변수에 a의 시작주소가 들어간다. 그러면 pointer + 1은 무엇일까? 보통은 int형 변수에 + 1을 하면 그 값의 + 1된다. 즉, a에 + 1을 하면 6이 된다. 하지만,..
-
[SW 정글 33일차] gcc 알아보기기타/SW 사관학교 정글 2021. 9. 4. 02:33
어제는 가상 소프트웨어를 처음 접하면서 가상화에 대해 공부했는데 오늘은 내가 짠 C언어 코드를 컴파일하기 위한 도구인 gcc라는 컴파일러에 대해 공부해보려고 한다. 1. GCC (GNU Compiler Collection)란? GCC는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러 중 하나이다. GNU 프로젝트에 대해 간단히 말하면 GNU's Not UNIX의 줄임말로 유닉스와 호환될수 잇도록 만들어진 일종의 operating system으로 open source software이다. GCC는 초기에 C언어만을 지원했던 컴파일러였지만 현재는 C++, Objective-C, Fortran, Ada, Go 등 다양한 언어에서 쓰일 수 있는 컴파일러이다. 2. GCC의 컴파일 과정 컴파일 과정..