자료구조 4

[3/30 자료구조 공부] 우선순위 큐 Priority Queue (Heap)

자료 구조란(Data Structure)? -> 말 그대로 자료(데이터)를 저장하는 구조즉 데이터를 저장하고 관리하는 방식을 뜻한다  예를 하나 들어보겠습니다. 1. 연락처에 전화번호를 저장한다고 했을 때 가장 쉬운 건 종이에다가 한줄한줄 써놓으면 될 것임하지만 연락처가 수천개 수만개가 된다면? 그만큼 찾는 시간도 굉장히 느려지게 될 것임 2. 전화번호부를 ㄱㄴㄷㄹㅁㅂㅅ 순으로 정렬해서 기록한다면 ? 그만큼 전화번호를 찾는 속도는 빨라지겠지만전화번호를 더 추가하게되면 뒤에 있는 전화번호를 전부 다 삭제하고 재 기록해야할 것임 3. 그럼 미리 널널하게 공간을 만들어둔다면? 전화번호를 빨리 찾을 수도있고 추가를 하더라도 미리 공간을 확보해놨기 때문에뒤에 있는 전화번호를 삭제할 필요는 없을 것임, 하지만 공간..

자료구조 2025.03.30

3/4 출근 전 공부하는 자료구조 (스택, 큐)

스택? = LIFO 구조 삽입/삭제의 경우 O(1)을 갖는다(맨위의 값을 삭제/삽입한다고 가정하면)#Pythons=[]s.append(123)s.append(456)s.append(789)print("size:", len(s))while len(s) > 0 :print(s[-1])s.pop(-1)  -1을 pop한다고 하면 맨 뒤의 값 pop한 다는 것임 = pop() 마찬가지 스택을 실제로 사용하는 경우? 웹 페이지에서 뒤로 가는 경우 큐? = LILO 맛집 생각해봐라 맛집 같은 경우 사람들이 줄을 서서 기다리는데 먼저 들어온 사람이 먼저 식당 안으로 들어감  마찬가지로 삽입/삭제의 경우 시간복잡도 O(1)# Pythonfrom collections import deque# Queue는 너무 느림 알고..

자료구조 2025.03.04

[2/24 출근 전 공부하는 파이썬 기초 자료구조, 알고리즘] 배열

배열 Array - 삽입/삭제 : O(N)- 탐색: O(1)- C++에서는 size 변경 불가- Python은 리스트를 사용 -> 담는 요소를 다양하게 담을 수도 있고 사이즈도 다양하게 변경이 가능함   c++int arr[4] = (10, 11, 12, 13);arr[2] = 5; #Pythonarr = [10, 11, 12, 13]arr[2] = 5    arr[2] 라는 코드를 쓰면 arr 의 시작 인덱스가 있을거고 + (2 * 4byte) = 메모리주소값으로 계산해서 점프하게 됨  배열의 주소 계산 공식 (주소 = 배열 시작 주소 + (인덱스 * 자료형 크기)  한번에 메모리 주소값이 어디있는지 한번에 계산할 수 있기 때문에 탐색 속도가 굉장히 빠름 그래서 O(1) 임 이걸 임의 접근 이라고 함 ..

자료구조 2025.02.24

[자료구조] 첫번째 공부

자료구조자료구조는 Data Structure로 데이터 구조 더 자세히 설명하면 "일련의 일정 타입들의 데이터 모임 또는 관계를 나타낸 구성체'라고 말할 수 있다.- 자료구조와 알고리즘은 서로 뗄 수 없는 상호 의존적인 관계- 왜 상호 의존적이냐? 알고리즘 문제를 풀기 위해 문제를 해석한 다음 보통 자료구조를 선택- 자료구조를 선택하면 해당 자료구조에 맞는 알고리즘을 선택하는데 보다 더 "효율적인 알고리즘" 을 선택할 수 있다는 장점- 예를 들어 순서가 있는 "데이터 삽입 (insert/add)", "삭제 (remove/delete)"가 빈번하게 발생하면 "LinkedList", 아닐 경우 "ArrayList"를 쓰듯이 각 "자료구조"별로 "장단점"이 존재. 따라서 알고리즘 선택에 있어 매우 중요한 역할을..

자료구조 2024.11.23