배열 5

[자료구조] Array와 LinkedList의 삽입/삭제 (feat. ArrayList vs LinkedList)

1. Array vs LinkedList 정의 Array와 LinkedList는 모두 연속된 데이터 집합을 위한 기본 자료구조입니다. 차이 Array와 LinkedList의 가장 큰 차이는 메모리 할당 방식입니다. Array Array는 연속적인 주소 할당으로, 주소를 이용하면 모든 데이터의 접근 시간이 동일한 Random Access가 가능하여 데이터 탐색이 빠를 수 있습니다(O(1)). 그러나 데이터 삽입/삭제에서 이 연속성을 지키기 위해 데이터를 움직이는 비용(O(n))이 발생하고, 크기가 고정되야하기 때문에 Dynamic Array의 경우 데이터 삽입 중 크기가 큰 Array로 copy하는 비용(Amortized O(1))이 발생할 수 있습니다. LinkedList LinkedList는 원소마다 ..

고민하기 2022.04.16

[파이썬 알고리즘 인터뷰][이진검색] 회전 정렬된 배열 검색

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 로그 재정렬 기준 책에서 구현된 코드 class Solution: def search(self, nums: List[int], target: int) -> int: # 예외 처리 if not nums: return -1 # 최소값 찾아 피벗 설정 left, right = 0, len(nums) - 1 while left nums[right]: left = mid + 1 else: right = mid pivot = left # 피벗 기준 이진 검색 left, right = 0, len(nums) - 1 wh..

책읽기 2021.08.13

[Java의 정석][Chapter-5] 배열

이 글은 "Java의 정석 (남궁 성 지음)"을 읽고 주관적으로 요약한 글입니다. ※ 요약 배열 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 배열의 선언과 생성 int[] score; (메모리를 할당하지 않은 상태) int[] score = new int[3]; int[] socre = int[]{1, 2, 3}; int[] score = {1,2,3}; 안되는 케이스 int[] score; score = {1,2,3}; 기본값인 0으로 초기화 배열의 길이 범위 : 0 ~ 약 20억 변수로 길이 선언 가능 배열이 길이가 0인 경우 - main args에 아무것도 들어오지 않을 때 - JVM이 args를 길이 0인 배열로 생성하여 args.length가 0이므로, null인지 검사할 필요가 없음 배..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰][HEAP] 배열의 K번째 큰 요소

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 정렬되지 않은 배열에서 K번째 큰 요소 추출 책에서 구현된 코드 class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: return sorted(nums, reverse=True)[k - 1] 기억해야할 기법 정렬이 더 빠르다 heapify해서 K번째 요소를 찾는 것보다 정렬이 더 빠르다고 한다 내가 구현한 코드 class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: heapq.heapify(nums) k = len(nums)-k+1 while k != 1..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰] 7장 - 배열

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 7장 배열 정의 값 또는 변수 엘리먼트의 집합으로 구성된 구조 하나 이상의 인덱스 또는 키로 식별 연속 방식 자료구조는 연속 방식과 포인터 기반 연결 방식으로 나뉨 배열은 연속 방식 요소의 주소가 연속적인 값으로 연결된 형태 추상 자료형 (ADT)의 실제 구현은 대부분 배열 또는 연결 리스트를 기반 - ex) 스택을 연결 리스트로 구현, 큐를 배열로 구현 C언어 기준의 배열 크기를 지정하고, 해당 크기만큼 연속된 메모리 공간을 할당 받는 자료형 생성 후 크기를 변경할 수 없음 (크기 고정) 어느 위치나 O(1)에 조회가 가능하다는 장점 동적 배열 전체 데이터 크기를 미리 가늠하기 어려움 크기를 지정하지 않고 자동 re..

책읽기 2021.07.18