풀스택 기술블로그
풀스택 기술블로그
개발공부/자료구조
자료구조 정리 - 해시(Hash)
2025.10.03
해시 (Hash)핵심 개념:Key-Value 쌍으로 데이터 저장해시 함수로 키를 인덱스로 변환**평균 O(1)**에 삽입/삭제/탐색!이름:Hash Table (해시 테이블)Hash Map (해시 맵)Dictionary (딕셔너리 - Python)Associative Array (연관 배열)해시의 핵심:Key를 인덱스로 변환 → O(1) 접근충돌 해결이 중요 (Chaining / Open Addressing)Load Factor 관리로 성능 유지장점:평균 O(1) 연산구현 간단 (언어 지원)단점:정렬 불가최악 O(n)메모리 오버헤드 해시 함수 (Hash Function) 역할: 키 → 인덱스 변환 # 간단한 예시def hash_function(key, table_size): return key % ..
개발공부/자료구조
자료구조 정리 - 스택(Stack)과 큐(Queue) 그리고 덱(Deque)
2025.10.03
스택 (Stack)핵심 개념:LIFO (Last In First Out) - 후입선출나중에 들어간 게 먼저 나옴접시 쌓기, 뒤로가기 버튼 같은 구조기본 연산:push(x): 맨 위에 추가 - O(1)pop(): 맨 위 제거하고 반환 - O(1)peek()/top(): 맨 위 값만 확인 - O(1)isEmpty(): 비어있는지 확인 - O(1)구현 방식:배열 기반: 동적 배열 사용 (대부분 이렇게)연결리스트 기반: 헤드에서만 삽입/삭제시간복잡도:모든 연산: O(1)스택의 구현 예시 (배열 기반)class Stack: def __init__(self): self.items = [] def push(self, x): self.items.append(x) # O(1)..
개발공부/자료구조
자료구조 정리 - 배열(Array)과 리스트(List)
2025.10.03
배열 (Array)핵심 개념:연속된 메모리 공간에 같은 타입의 데이터를 저장인덱스로 직접 접근 가능 (Random Access)크기가 고정됨 (정적 배열 기준)시간복잡도:접근(Access): O(1) - 인덱스로 바로 접근탐색(Search): O(n) - 순차 탐색 필요삽입(Insert): O(n) - 중간 삽입 시 뒤 요소들을 밀어야 함삭제(Delete): O(n) - 중간 삭제 시 뒤 요소들을 당겨야 함장점:인덱스 접근이 매우 빠름메모리 효율적 (연속 배치로 캐시 친화적)구조가 단순함단점:크기 변경 불가 (정적 배열)중간 삽입/삭제가 비효율적메모리 낭비 가능 (미리 크기를 크게 잡으면) 리스트 (List) - 동적 배열핵심 개념:크기가 동적으로 변하는 배열내부적으로 배열을 사용하되, 꽉 차면 더 큰 ..
개발공부/Python
파이썬의 특수한 딕셔너리에 대해
2025.10.03
1. OrderedDict (순서 있는 딕셔너리) 탄생 배경# Python 3.6 이전d = {}d['c'] = 3d['a'] = 1d['b'] = 2print(d) # 순서 보장 안 됨! (랜덤하게 나올 수 있음)# {'a': 1, 'c': 3, 'b': 2} 또는# {'b': 2, 'a': 1, 'c': 3} 등등 문제:삽입 순서를 알 수 없음테스트 결과가 매번 달라짐순서가 중요한 경우 문제 OrderedDict 등장from collections import OrderedDictod = OrderedDict()od['c'] = 3od['a'] = 1od['b'] = 2print(od) # OrderedDict([('c', 3), ('a', 1), ('b', 2)])# 항상 삽입 순서 보장! ..
개발공부/JAVA
자바의 근본을 파헤쳐보자~자바의 기원부터 메모리관리까지~
2025.10.03
1. 왜 자바는 등장했을까?역사적 배경 (1990년대 초)1991년, Green Project: Sun Microsystems의 James Gosling이 이끄는 팀이 가전제품용 소프트웨어 개발 시작당시의 문제점들:C/C++로 작성된 코드는 플랫폼마다 다시 컴파일해야 함셋톱박스, TV, VCR 등 다양한 하드웨어에서 동작해야 했는데, 각각 다른 아키텍처와 운영체제 사용포인터 관리의 복잡성으로 메모리 누수, 세그멘테이션 오류 등이 빈번네트워크 환경이 확산되면서 보안 문제가 대두초기 이름: Oak (제임스 골스링의 사무실 밖 참나무에서 유래) → 상표권 문제로 Java로 변경웹의 등장과 방향 전환:1993년 Mosaic 브라우저 등장으로 웹 시대 개막가전제품보다 웹 애플릿에 집중1995년 5월 23일, Ja..