자료구조(4)
-
자료구조는 왜 중요할까?
자료구조가 중요한 이유 코딩을 처음 시작했을 때를 생각해보면,단순히 내가 작성한 코드가 올바르게 작동하는 지가 가장 중요했다. (지금도 별반 다르지 않다.)하지만 동아리에서 흔히 코딩좀 치는(?) 형들이 서로 코드 리뷰하는 대화를 들어보면, 그렇게 잘 짠 코드는 아닌듯?하는 대화를 들을 때가 많다. 그렇다면 '잘 짠 코드' 란 뭘까? 고품질 코드'잘 짠 코드', 즉 고품질 코드는 바로 다음을 만족하는 코드이다.1. 코드의 유지보수성 (Maintainability)👉 코드가 직관적이며 쉽게 수정, 확장될 수 있는가? 2. 코드의 효율성 (Efficiency)👉 코드가 빠르고 적은 리소스를 사용하도록 최적화되었는가? 위 두 가지를 만족하는 것이 뛰어난 개발자의 역량이며,이를 위해 적절한 자료구조 와 ..
2025.03.14 -
추상 자료형 (Abstract Data Type)
1. 자료구조와 알고리즘1.1 자료구조이번 방학을 알차게 보내기 위해, 방학때 이루고자 하는 목표를 차례대로 기록했다.우선, 그동안 미뤄놨던 컴퓨터 파일 정리를 했는데, 학기-과목-과제 이런 계층적인 디렉터리를 이용해서 파일을 저장했다. 목표를 차례대로 기록하는 것, 컴퓨터에 계층적인 디렉토리로 저장하는 것과 마찬가지로프로그램에서도 자료들을 정리하여 보관하는 여러 가지 구조들이 있으며, 이를 자료구조라고 한다. 예를 들면 대표적으로 다음과 같은 자료구조가 있다.스택 : 식당에서 그릇을 쌓는 것처럼 자료들을 쌓아서 정리하는 구조큐 : 마트 계산대의 줄처럼 먼저 도착한 자료가 먼저 빠져나가는 구조 1.2 알고리즘간단한 구구단 계산기 프로그램을 만들어본다고 하자.간단하게 궁금한 단 수를 입력받고, 입력받은..
2024.07.04 -
void 포인터와 const 포인터
void 포인터void라는 키워드는 보통 함수 앞에서 반환형이 없을 때 쓰인다.그렇다면 (int *), (char *)형 포인터와 어떤 차이가 있을까? 다음 코드를 살펴보자int a = 100;int *b = &a;이 코드가 의미하는 바는 다음과 같다.b는 a의 주소를 저장하고 있고, b를 통해 a를 참조할 수 있는데, 그곳에는 int형 데이터가 있다. 그렇다면 void 포인터를 선언하는 코드 역시 다음과 같이 해석할 수 있을 것이다.int a = 100;void *b = &a;b는 a의 주소를 저장하고 있고, b를 통해 a를 참조할 수 있는데, 그곳에는 void형 데이터가 있다. 그러나 void는 "빈공간'. 즉 자료형을 가지고 있지 않기 때문에 컴파일러는 데이터를 참조할 수 없을 것이다.왜냐하면 자..
2023.12.26 -
[C] 메모리 할당 방법
9살 때 집에서 생일파티를 한 적이 있다. 친구들이 많이 올 것이라 예상하고, 치킨, 피자 등 여러가지 음식을 준비했으나 갑자기 친구들이 일이 생겨서 2명 밖에 오지 않았고, 그래서 음식을 다 남겼던 아직까지도 슬픈 기억이 있다.. 누군가는 이 이야기를 듣고 다음과 같이 얘기할 수 있다. 제목을 메모리 할당으로 지어놓고 갑자기 생일파티? 오늘 얘기할 메모리 할당과 연관지어 보자. 동적 할당 vs 정적 할당 정적 (Statics) 처음 내 생일 파티에 참석할 친구 수는 미리 알려져 있었다. 따라서, 생일 파티 전날에 친구 수를 확인하고, 정해진 친구 수에 맞게 음식과 접시를 미리 준비하면 된다. 파티가 시작되면 이미 준비된 음식과 접시를 사용하며, 나중에 친구가 오더라도 새로운 준비를 할 필요가 없는 것!..
2023.12.24