본문 바로가기

모바일앱/알고리즘5

기본적인 자료구조(4) - 큐 (Queue) 큐(Queue)는 선입선출(FIFO: First In, First Out)의 원칙을 따르는 자료구조다.가장 먼저 들어온 데이터가 가장 먼저 나가며, 주로 대기열이나 리소스 관리 등에서 사용된다.  큐의 주요 특징선입선출(FIFO): 가장 먼저 들어온 요소가 가장 먼저 나감.동적 크기: 필요에 따라 요소를 추가하거나 삭제할 수 있음.제한적인 접근: 큐는 맨 앞과 맨 뒤에서만 요소를 추가하거나 제거할 수 있음. 주요 연산:enqueue: 큐의 끝에 요소를 추가.dequeue: 큐의 앞에서 요소를 제거하고 반환.peek: 큐의 맨 앞에 있는 요소를 제거하지 않고 확인.isEmpty: 큐가 비어있는지 확인. 시간 복잡도enqueue: O(1) – 큐의 끝에 요소를 추가.dequeue: O(1) – 큐의 앞에서 .. 2024. 10. 1.
기본적인 자료구조(3) - 스택(Stack) 스택(Stack)은 후입선출(LIFO: Last In, First Out) 원칙을 따르는 선형 자료구조다.스택은 데이터의 순서를 처리할 때 유용하며, 주로 재귀 호출, 백트래킹 등의 알고리즘에서 많이 사용된다. 스택의 주요 특징후입선출(LIFO): 마지막에 삽입된 요소가 가장 먼저 제거된다.동적 크기: 필요에 따라 요소를 추가하거나 삭제할 수 있다.제한적인 접근: 스택은 맨 위(top) 요소만 접근할 수 있다. 주요 연산:push: 요소를 스택의 맨 위에 추가.pop: 스택의 맨 위에 있는 요소를 제거하고 반환.peek: 스택의 맨 위에 있는 요소를 제거하지 않고 반환.isEmpty: 스택이 비어있는지 확인. 스택의 시간 복잡도push, pop, peek: 모두 O(1) 시간 복잡도를 가진다.스택의 맨 .. 2024. 10. 1.
기본적인 자료구조(2) - 연결 리스트(Linked List) 연결 리스트(Linked List)는 노드(Node)라는 개체들이 연결된 구조로 데이터를 저장하는 자료구조. 각 노드는 데이터와 다음 노드를 가리키는 참조(포인터)로 이루어져 있다. 배열과 달리, 연결 리스트는 동적 크기를 가지며, 요소 삽입/삭제 시 메모리 재할당이 필요 없다는 장점이 있다.연결 리스트의 주요 특징동적 크기: 배열과 달리 연결 리스트는 크기가 가변적으로, 필요에 따라 노드를 추가하거나 삭제할 수 있다.노드 기반 연결: 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성돼. 노드를 통해 연속된 데이터를 저장할 수 있다.순차 접근: 인덱스를 통해 바로 접근하는 배열과 달리, 연결 리스트는 순차적으로 노드를 탐색해야 한다. 시간 복잡도삽입/삭제: 특정 위치에 노드를 삽입하거나 삭제할 때는.. 2024. 10. 1.
기본적인 자료구조(1) - 배열(Array) 기본적인 자료구조 - 배열배열(Array)배열은 같은 데이터 타입의 값들을 순차적으로 저장하는 선형 자료구조다. 배열의 각 값은 인덱스를 통해 접근하며, 인덱스는 0부터 시작한다. 배열은 연속된 메모리 공간에 저장되므로, 빠른 접근 속도를 제공한다. 배열의 주요 특징인덱스 기반 접근: 배열은 인덱스를 사용해 각 요소에 O(1)의 시간 복잡도로 빠르게 접근한다.예: array[0]은 배열의 첫 번째 요소에 접근한다.고정된 크기: 배열은 선언 시 크기가 고정되며, 배열의 크기를 변경하려면 새로운 배열을 생성해야 한다. Swift에서는 동적 크기의 배열을 지원하지만, 일반적인 배열은 고정 크기다. 삽입/삭제의 시간 복잡도삽입/삭제: 배열의 중간에 요소를 삽입하거나 삭제할 경우, O(n)의 시간이 걸린다. 이는.. 2024. 9. 29.
백준 (단계별로 풀어보기) 입출력과 사칙연산(1) 입출력 1. Hello World 성공 더보기 print("Hello World!") 2. We love kriii 성공 더보기 print("강한친구 대한육군\n강한친구 대한육군") 3. 고양이 성공 더보기 let cat = #""" \ /\ ) ( ') ( / ) \(__)| """# print(cat) print("\\ /\\\n ) ( ')\n( / )\n \\(__)|") 개 성공 더보기 print("|\\_/|\n|q p| /}\n( 0 )\"\"\"\\\n|\"^\"` |\n||_/=\\\\__|") 이 다음 문제부터는 입력을 해야한다. Swift 에서는 입력을 하려면 더이상 Playground에서 할 수없다. 다음 글에서 계속! 2021. 9. 30.