전체 글18 로지텍 온보드 메모리 매니저를 웹으로 구현하기 2편 — G(Global)OMM으로 확장하다 1. 로지텍 전용 프로그램에서 벗어난 이유이전에 WebHID를 이용해 로지텍 마우스의 온보드 메모리를 브라우저에서 관리하는 프로그램을 만들었다.프로젝트 이름은 Logitech OMM이었다.당시에는 로지텍 마우스만 지원했기 때문에 이름에도 Logitech을 사용했다. 그런데 개발을 이어가면서 지원 범위가 달라졌다.로지텍 기능을 확장하는 동시에 VGN, ATK, MCHOSE 마우스의 설정 프로토콜도 구현했다. 이제는 로지텍 전용 프로그램이라고 부르기 어려워졌다.그래서 이름을 GOMM(Global Onboard Memory Manager) 으로 변경했다.이름뿐 아니라 화면 구성도 다시 만들었다. 기존 기능을 추가하는 데 그치지 않고, 서로 다른 제조사의 마우스를 하나의 프로그램에서 관리할 수 있도록 구조를 확.. 2026. 10. 16. [자료구조 14] 큐(Queue)란? FIFO 구조와 주요 연산, Python 구현 프로그래밍에서는 여러 데이터를 저장한 순서대로 처리해야 하는 상황이 자주 발생한다.예를 들어 은행의 대기열이나 프린터의 출력 작업에서는 일반적으로 먼저 들어온 요청을 먼저 처리한다.이처럼 먼저 삽입한 데이터를 가장 먼저 제거하는 자료구조가 큐(Queue)다.지난 글에서 살펴본 스택(Stack)이 LIFO 구조라면, 큐는 FIFO 구조를 따른다.이번 글에서는 큐의 기본 개념과 FIFO 원리, 주요 연산과 시간 복잡도, Python을 이용한 구현 방법을 알아본다.1. 큐(Queue)란?큐(Queue) 는 먼저 삽입한 데이터가 가장 먼저 제거되는 선형 자료구조다.큐는 FIFO(First In, First Out) 원칙에 따라 동작한다.FIFO는 먼저 들어온 데이터가 먼저 나간다는 의미다.예를 들어 사람들이 순.. 2026. 10. 15. [자료구조 13] 스택(Stack) 직접 구현하기 — 배열과 연결 리스트 방식 비교 지난 글에서는 스택(Stack)의 기본 개념과 LIFO(Last In, First Out) 원리, 주요 연산을 알아보았다.스택은 마지막에 삽입한 데이터를 가장 먼저 제거하는 자료구조다.그런데 스택은 반드시 한 가지 방법으로만 구현해야 할까?스택은 데이터의 삽입과 삭제 순서를 정의하는 추상 자료형(ADT)이므로, 내부 저장 방식은 자유롭게 선택할 수 있다.대표적으로 배열(Array)과 연결 리스트(Linked List) 를 이용하여 구현할 수 있다.이번 글에서는 두 가지 방식으로 스택을 직접 구현하고, 주요 연산과 시간 복잡도, 메모리 사용 방식의 차이를 비교한다.1. 배열 기반 스택과 연결 리스트 기반 스택이란?스택의 핵심은 데이터를 저장하는 방식이 아니라 LIFO 규칙을 만족하는 것이다.따라서 내부적으.. 2026. 10. 15. [자료구조 12] 스택(Stack)이란? LIFO 구조와 주요 연산, Python 구현 프로그래밍에서는 데이터를 저장한 순서와 꺼내는 순서가 중요한 경우가 있다.예를 들어 웹 브라우저의 뒤로 가기 기능이나 프로그램의 실행 취소 기능에서는 가장 최근에 수행한 작업을 먼저 처리해야 한다.이처럼 마지막에 저장한 데이터를 가장 먼저 꺼내는 구조가 스택(Stack)이다.스택은 배열, 연결 리스트와 함께 대표적인 선형 자료구조로 분류되며, 코딩 테스트에서도 자주 사용된다.이번 글에서는 스택의 기본 개념과 LIFO 원리, 주요 연산과 시간 복잡도, Python을 이용한 구현 방법을 알아본다.1. 스택(Stack)이란?스택(Stack) 은 데이터의 삽입과 삭제가 한쪽 끝에서만 이루어지는 자료구조다.스택은 LIFO(Last In, First Out) 원칙에 따라 동작한다.LIFO는 마지막에 들어온 데이터가.. 2026. 10. 15. [자료구조 11] 배열과 연결 리스트 비교 — 메모리 구조, 시간 복잡도, 선택 기준 배열(Array)과 연결 리스트(Linked List)는 데이터를 순서대로 관리하는 대표적인 선형 자료구조다.두 자료구조는 모두 여러 데이터를 저장하고 탐색하거나 삽입하고 삭제할 수 있다.하지만 데이터를 메모리에 저장하는 방식이 서로 다르기 때문에 같은 연산에서도 성능 차이가 발생한다.배열은 인덱스를 이용한 접근에 유리하고, 연결 리스트는 노드의 참조를 변경하는 삽입과 삭제에 유리한 경우가 있다.그렇다면 실제 프로그램에서는 어떤 자료구조를 선택해야 할까?이번 글에서는 배열과 연결 리스트의 메모리 구조, 주요 연산의 시간 복잡도, 메모리 사용량, Python에서의 활용 방법을 비교한다.1. 배열과 연결 리스트란?1.1. 배열(Array)배열은 여러 데이터를 일정한 순서에 따라 저장하고, 인덱스를 이용하여 .. 2026. 10. 15. [자료구조 10] 이중 연결 리스트와 원형 연결 리스트란? 구조와 Python 구현 지난 글에서는 단일 연결 리스트(Singly Linked List)의 구조와 노드를 삽입하고 삭제하는 방법을 살펴보았다.단일 연결 리스트는 각 노드가 다음 노드에 대한 참조를 저장하므로 앞에서 뒤로 이동할 수 있다.그렇다면 이전 노드로도 이동해야 하거나, 마지막 노드에서 첫 번째 노드로 다시 돌아가야 한다면 어떻게 해야 할까?이러한 요구를 해결하기 위한 구조가 이중 연결 리스트(Doubly Linked List) 와 원형 연결 리스트(Circular Linked List) 다.이번 글에서는 두 연결 리스트의 구조와 동작 원리를 알아보고, Python으로 직접 구현하면서 주요 연산의 시간 복잡도를 분석한다.1. 이중 연결 리스트와 원형 연결 리스트란?1.1. 이중 연결 리스트(Doubly Linked Li.. 2026. 10. 15. 이전 1 2 3 다음