본문 바로가기
반응형

프로그래밍97

트리 (1) - 이진 트리(Binary Tree)의 모든 것: 원리, 구조, 예제 코드(C언어 Java, Python), 장단점, 사용 사례 데이터 구조를 배우는 데 있어 이진 트리(Binary Tree)는 중요한 개념입니다. 이진 트리는 효율적인 데이터 저장과 검색을 가능하게 하며, 다양한 응용 분야에서 사용됩니다. 또한 코딩 테스트 문제 풀이 시 시간 복잡도를 O(logN)으로 만들어 문제 풀이의 키 아이디어가 되는 경우가 매우 많습니다. 이번 글에서는 이진 트리의 원리, 구조, C/Java/Python으로 구현한 예제, 장단점, 그리고 실생활 사용 사례를 살펴봅니다.1. 이진 트리란? (원리와 개념)이진 트리는 각 노드가 최대 두 개의 자식을 가지는 트리 자료구조입니다. 부모-자식 관계로 구성되며, 이진 탐색 트리, 힙, AVL 트리 등 다양한 형태로 확장됩니다.주요 용어루트(Root): 트리의 시작 노드.부모(Parent): 자식 노드.. 2024. 12. 18.
스택(Stack) 자료구조란? (C언어, Java, Python 예시코드 포함) (1) 스택(Stack) 자료구조란?스택(Stack)은 데이터를 후입선출(LIFO, Last In First Out) 방식으로 처리하는 선형 자료구조입니다. 즉, 가장 나중에 삽입된 데이터가 가장 먼저 제거됩니다. 이 특성 덕분에 함수 호출 관리, 계산기 구현, 문자열 역순 처리 등 다양한 프로그래밍 문제에서 활용됩니다. (2) 스택의 기본 동작삽입(Push): 스택의 맨 위에 데이터를 추가.삭제(Pop): 스택의 맨 위 데이터를 제거.확인(Peek 또는 Top): 스택의 맨 위 데이터를 제거하지 않고 확인. (3) 스택의 주요 특징후입선출(LIFO): 나중에 삽입된 데이터가 먼저 제거됨.제한된 접근: 데이터는 스택의 맨 위에서만 삽입 및 제거 가능.구현 방식: 배열 또는 연결 리스트를 사용. (4) 스.. 2024. 12. 18.
큐(Queue) 자료구조란? (C언어, Java, Python 예시코드) (1) 큐(Queue) 자료구조란?큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO, First In First Out) 방식으로 동작하는 데이터 구조입니다. 이러한 특성 때문에 대기열, 작업 스케줄링, 메시지 처리 등 다양한 응용 분야에서 활용됩니다. (2) 큐의 기본 동작삽입(Enqueue): 큐의 끝(Rear)에 데이터를 추가.(예를들어 50을 큐에 추가할 경우 40에 위치한 rear를 한칸 오른쪽으로 밀고 그 칸에 추가)삭제(Dequeue): 큐의 앞(Front)에서 데이터를 제거.(현재 front가 위치한 10을 빼내고 deque 후 front는 20을 가리킴)보기(Peek): 큐의 앞에 있는 데이터를 제거하지 않고 확인.(단순히 현재 front가 가리키고 있는 값이 뭔지만 .. 2024. 12. 18.
타입 캐스팅을 활용해서 성능 개선하기 이번 글에서는 타입 캐스팅을 활용해서 코드 실행시간을 단축시키는 스킬에 대해서 알아보도록 하겠습니다.  1억개의 char형 배열을 0으로 초기화해야하는 상황이라고 가정하겠습니다. 보통 아래 코드 처럼 1억개의 원소를 하나하나 초기화 하는 방식으로 구현할 것입니다. #include#includechar arr[100000001];int main(void) { clock_t start = clock(); for (int i = 0; i 이 코드를 실행시켜보면 제 컴퓨터 환경에서는 약 250ms 정도가 걸립니다.  타입 캐스팅을 활용하면 약 75ms로 실행시간을 단축시킬 수 있습니다. (1) 핵심 아이디어char 자료형 = 1 bytelong long 자료형 = 8 byte같은 배열의 원소들의 주소는 연속적이.. 2023. 8. 13.
반응형