python 33

자료구조 - 이중 연결 리스트(Doubly Linked List)

1. 이중 연결 리스트(Doubly Linked List)란앞서 단일 연결 리스트(Singly Linked List)에 대해 알아보았다. 2026.06.01 - [python] - 자료구조- 단일 링크드 리스트 (Singly Linked List) 이번 글에서는 이중 연결 리스트에 대해서 알아보자. 단일 연결리스트는 다음 노드의 주소 정보만 저장했던 반면, 이중 연결 리스트는 이전 노드와 다음 노드의 주소 정보를 모두 저장하는 자료구조이다.2. 이중 연결 리스트(Doubly Linked List)의 장/단점2.1 장점1️⃣ 실행 중 메모리 할당과 재할당이 비교적 쉽다.이중 연결 리스트는 실행 중에 노드를 추가하거나 삭제할 수 있다. 그래서 배열처럼 미리 크기를 정해둘 필요가 없다.2️⃣ 양방향 순회가 ..

python 2026.06.03

자료구조 - 트리

1. 트리(Tree)트리(Tree)는 데이터를 부모-자식 관계를 기반으로 계층적으로 표현하는 비선형 자료구조이다.또한, 트리는 여러 개의 노드(Node)로 구성되며, 가장 위에 있는 노드를 루트 노드 (Root Node)라 부른다. 일반적으로 각 노드는 하나 이상의 자식 노드를 가질 수 있다.1.1 트리를 사용하는 이유트리는 데이터를 단순히 저장하는 것보다, 계층적인 관계를 표현하거나 탐색을 효율적으로 하기 위해 사용된다.그래서 트리는컴퓨터 폴더 구조조직도같은 구조에서 자주 활용된다.1.2 배열(Array)과의 차이점배열과 트리를 크게 3가지를 기준으로 차이점을 정리해보았다. 구분배열(Array)트리(Tree)데이터 접근 방식인덱스를 통해 임의 접근 가능노드를 따라 순회해야 함크기보통 고정적가변적메모리 ..

python 2026.06.03

자료구조- 단일 링크드 리스트 (Singly Linked List)

1. 링크드 리스트(Linked List)란링크드 리스트란 요소들이 비연속적인 메모리공간에 할당된 선형 자료구조이다.링크드 리스트는 연결 방식에 따라 크게 단일 연결 리스트(Singly Linked List) 와 이중 연결 리스트(Doubly Linked List) 로 나눌 수 있다.단일 연결 리스트 : 다음 노드의 정보만 저장이중 연결 리스트 : 이전 노드와 다음 노드의 정보를 모두 저장이번에는 먼저 단일 연결 리스트에 대해 알아보자.단일 연결 리스트는 각 노드가 자신의 다음 노드만 가리키는 구조의 연결 리스트이다.2. 단일 연결리스트(Singly Linked List)의 구조단일 연결 리스트는 각 노드(Node)가 데이터를 저장하고, 다음 노드를 가리키는 포인터를 함께 가지는 구조이다. 여기서 노드(..

python 2026.06.01

자료구조 -큐(Queue)

1. 큐(Queue)란?큐는 먼저 들어온 데이터가 먼저 나가는 FIFO(선입선출)식 선형 자료구조이다.2. 큐의 동작 방식 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 FIFO 구조이다.데이터는 뒤(rear)에서 삽입되고, 앞(front)에서 삭제된다.1️⃣ Enqueue(데이터 삽입)큐의 맨 뒤쪽인 rear위치에 데이터를 삽입한다.새로운 데이터가 들어오면 기존 데이터들의 가장 뒤에 줄을 선다.위의 예시처럼 10,20,30 순서대로 넣으면 10부터 차곡차곡 쌓이고, rear은 가장 마지막에 들어온 30을 가리키게 된다.2️⃣ Dequeue (데이터 삭제)큐의 맨 앞쪽인 front위치의 데이터를 꺼낸다. 데이터를 꺼낼 때는 가장 먼저 들어와서 맨 앞에 있던 데이터부터 빠져나간다. 데이터가 하나 빠져..

python 2026.05.30

자료구조 - 스택(Stack)

1. 스택(Stack)이란?스택(Stack)은 한쪽 방향으로만 데이터의 삽입과 삭제가 이루어지는 선형 자료구조이다.후입선출(LIFO, Last In- First-Out)은 한쪽 방향으로만 데이터의 삽입과 삭제가 이루어지는 선형 자료구조이다.2. 스택의 동작 방식스택은 맨 위(Top)에서만 데이터의 삽입과 삭제가 이루어진다.1️⃣ 삽입하는 작업 (Push)위의 예시처럼 10 → 20 → 30 순서로 데이터를 넣으면, 가장 마지막에 들어온 30이 맨 위(Top)에 위치하게 된다.2️⃣ 삭제하는 작업 (Pop)반대로 데이터를 제거하는 pop() 작업은 맨 위 데이터부터 제거된다. 따라서 pop()을 실행하면 가장 마지막에 들어온 30부터 먼저 삭제되며, 이후 20, 10 순서대로 제거된다.3. 스택의 장,단점..

python 2026.05.30

자료구조 - 배열(Array)

1. 배열이란?배열(Array)은 같은 타입의 데이터를 연속된 메모리 공간에 저장하는 선형 자료구조이다.2. 배열의 동작 방식1️⃣ 배열은 데이터를 연속된 메모리 공간에 저장각 데이터는 인덱스를 가지기 때문에 특정 위치의 데이터에 바로 접근할 수 있다.2️⃣ 데이터 추가배열의 가장 뒤에 새로운 요소를 넣는 방식특정 위치에 요소를 삽입하는 방식3️⃣ 데이터 삭제배열의 가장 뒤의 요소를 제거하는 방식특정 위치의 요소를 제거하는 방식3. 배열의 장,단점3.1 배열의 장점배열은 데이터가 연속된 메모리 공간에 저장되기 때문에, 인덱스(index)를 알고 있다면 원하는 위치의 데이터에 바로 접근할 수 있다. 이러한 특징을 임의 접근(Random Access) 이 가능하다라 한다. 즉, 처음부터 순서대로 탐색하지 않..

python 2026.05.29

11. 객체 지향 프로그래밍 4대 패러다임 ①

객체지향 프로그래밍(OOP) 4대 패러다임은캡슐화, 상속, 다형성, 추상화이다. 캡슐화 : 데이터(속성)와 기능(메서드)을 하나로 묶고 외부에서 직접 접근을 제한하여 객체를 보호하는 개념상속 : 기존 클래스의 속성과 메서드를 물려받아 재사용하고 확장하는 구조다형성 : 같은 이름의 메서드라도 객체의 종류에 따라 다르게 동작할 수 있게 하는 특징으로, 코드의 유연성을 높여 줌추상화 : 복잡한 내부 구현은 숨기고 핵심적인 기능만 외부에 제공하는 것으로, 사용자는 세부 동작을 몰라도 객체를 쉽게 사용할 수 있게 해줌이 네 가지 개념을 통해 코드의 재사용성, 확장성, 유지보수성을 크게 향상시킬 수 있다.1. 캡슐화캡슐화(encapsulation)는객체지향 프로그래밍에서 데이터(속성)와 이를 처리하는 메서드를 하나..

python 2026.05.28

10. 객체지향 프로그래밍

1. 프로그래밍 방법론프로그래밍 방법론은 프로그램을 개발하는 다양한 접근 방식이나 철학을 의미한다.프로젝트의 규모, 요구 사항, 개발 팀의 특성에 따라 적합한 방법론이 달라지기 때문에 각 방법론의 특징과 장단점을 이해하는 게 중요하다.1.1 절차적 프로그래밍(Procedural Programming)절차(Procedure)를 중시하는 방식으로, 작업을 순서대로 실행하도록 프로그램을 구성한다. 사실 지금까지 파이썬에서 주로 작성했던 코드들은 대부분 절차적 프로그래밍 방식에 가까웠다. 절차적 프로그래밍에서는 코드가 명령문으로 이루어져 있고, 작업 순서가 중요하다. 변수와 함수가 함께 사용되며, 함수를 통해 프로그램의 기능을 분리하고, 코드 중복을 줄일 수 있다.1.2 객체지향 프로그래밍 (Object-Ori..

python 2026.05.28

9. 사용자 정의 함수 ②

1. 변수의 범위변수의 범위(scope)는 해당 변수를 프로그램 안에서 어디까지 참조하고 사용할 수 있는지를 의미한다.파이썬에서는 변수가 선언된 위치에 따라 사용할 수 있는 범위가 달라진다.1.1 지역 변수가장 내부의 범위로 함수 내에서 정의된 변수들이 지역 변수에 해당된다.함수 안에서 만들어진 변수는 그 함수 안에서만 사용할 수 있다.예시 👉 위 코드에서 local_var는 local_example() 함수 안에서 만들어진 변수이다. 따라서 함수 안에서는 정상적으로 사용할 수 있지만, 함수 밖에서 local_var를 사용하려고 하면 오류가 발생한다.1.2 전역(글로벌) 변수스크립트 전체에서 사용되는 범위로, 함수외부에서 정의된 변수가 해당된다모든 함수에서 접근할 수 있지만, 함수 내부에서 수정하려면 ..

python 2026.05.28

9. 사용자 정의 함수 ①

사용자 정의 함수란 사용자, 즉 개발자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미한다.Python에는 많은 내장 함수들이 있지만, 때로는 원하는 동작을 수행하는 함수를 직접 만들어야 할 때가 있다.또, 사용자 정의 함수를 사용하는 가장 큰 이유 중 하나는 코드의 재활용이다.1. 함수의 동작def 함수명(매개변수1, 매개변수2, ...): # 함수 내용 return 결과값 👉 함수는 내부적으로 다음과 같은 과정으로 동작한다.1️⃣ 함수 객체를 메모리에 생성2️⃣ 그 함수 객체에 함수명 이름을 붙임 👉 함수를 정의하면 함수 객체가 생성되지만, 함수 내부의 코드가 바로 실행되지는 않는다. 실제 실행은 함수를 호출했을 때 이루어진다.예시 👉 a=hello는 함수를 복사한 것이 아니라 ..

python 2026.05.27