일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- collections.sort
- 분할정복
- 트라이
- 백준
- 퀵정렬
- 이진트리탐색
- stack
- 코테
- 힙
- 스택
- 코딩테스트
- 파싱
- 스터디
- 15552번
- 자료구조
- 우선순위 큐
- 삽입정렬
- MSA
- heap
- 프로그래머스
- 팀정렬
- 해시함수
- LinkedList
- divide and conquer
- 선택정렬
- Timsort
- 큐
- 거품정렬
- 코테준비
- 연결리스트
- Today
- Total
목록분류 전체보기 (97)
Little bIT awesome

위상 정렬정렬 알고리즘의 일종으로, 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘사이클이 없는 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것' 진입차수와 진출차수진입 차수 : 특정한 노드로 들어오는 간선의 개수진출 차수 : 특정한 노드에서 나가는 간선의 개수 위상 정렬 알고리즘 동작 과정진입차수가 0인 노드를 큐에 넣는다.큐가 빌 때까지 다음의 과정을 반복한다.① 큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거② 새롭게 진입차수가 0이 된 노드를 큐에 삽입 위상 정렬의 특징사이클이 없는 방향 그래프(DAG)에 대해서만 수행할 수 있다. ※ DAG(Direct Acyclic Graph) : 순환하지 않는 방향 그래프위상 ..
- 1초 제한시간에서 일반적으로: * O(N): ~1억 * O(N²): ~1만 * O(N³): ~500 * O(N⁴): ~50 입력 크기로 판단N이 50 이하면:- O(N⁴)도 괜찮음- O(N³)은 거의 항상 가능- O(N²)은 매우 여유로움N이 1000 이하면:- O(N²)까지는 괜찮음- O(N³)은 위험N이 100,000 이하면:- O(N) 또는 O(NlogN) 정도만 가능 문제 유형으로 판단완전탐색이 필요해 보이고:- 입력크기가 매우 작으면(N≤50) → 브루트포스 가능성 높음- 특별한 제약조건이나 패턴이 없으면 → 브루트포스 가능성 높음 최단 경로- N ≤ 400: 플로이드-워셜 (O(N³))- N ≤ 20,000, E ≤ 300,000: 다익스트라 (O(ElogV))- 가중치가 1이거나..

Garbage Collection(GC) 이란?자바의 메모리 관리 방법 중 하나로 JVM (자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체 (garbage)를 모아 주기적으로 제거 C / C++에는 GC 없어서 프로그래머가 수동으로 메모리 할당/해제 해줘야 함. Java는 가비지 컬레터가 메모리 관리 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있도록 해줌개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에 대해 관리하지 않아도 됨(python, javascript, go 등에도 gc 내장됨) for (int i = 0; i 위의 코드에서 루프문에 의해 10000건의 객체 생성, but 루프가 끝나면 밖에..

DNS란?웹사이트에 접속할 때, 외우기 어려운 IP 주소 대신에 도메인 이름을 사용DNS : 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정, 시스템 DNS는 전세계적으로 약속된 규칙을 공유 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 '권한'을 부여DNS는 이처럼 (상위 기관과 하위 기관)과 같은 '계층 구조'를 가지는 분산 데이터베이스 구조를 가진다. DNS 구성 요소 (3)1. 도메인 네임 스페이스(Domain Name Space)2. 네임 서버 (Name Server) = 권한 있는 DNS 서버3. 리졸버 (Resolver) = 권한 없는 DNS 서버 "이 도메인 이름은 이 IP 주소이다" 라는 '텍스트'를 저장하는 데이..

1장 웹 브라우저가 메시지를 만든다01 HTTP 리퀘스트 메시지를 작성한다.1. 탐험 여행은 URL 입력부터 시작한다.브라우저는 몇 개의 클라이언트 기능(웹, 메일 등)을 겸비한 복합적인 클라이언트 소프트웨어따라서, 어느 기능을 사용할 것인지 프로토콜을 통해 제시해주어야 함2. 브라우저는 먼저 URL을 해독한다.브라우저는 각 프로토콜의 형식에 따라 URL을 해독3. 파일명을 생략한 경우생략될 경우에 접근할 디폴트 파일을 서버에 미리 설정주로 index.html이나 default.html끝에 / 이 생략될 경우, 우선 이름이 같은 파일 탐색하고 없으면 폴더 탐색4. HTTP의 기본개념클라이언트와 서버가 주고받는 메시지의 내용과 순서를 정의요청 메시지(Request) : 무엇을 + 어떻게 해서무엇을 : ur..
PriorityQueue(PQ)는 내부적으로 힙 정렬을 사용 vs Collections.sort()는 내부적으로 TimeSort 사용 시간 복잡도:힙 정렬: 항상 O(n log n)Timsort: 최선 O(n), 평균 및 최악 O(n log n)공간 복잡도:힙 정렬: O(1) (제자리 정렬 가능)Timsort: O(n) (병합 과정에서 추가 공간 필요)안정성:힙 정렬: 불안정 정렬Timsort: 안정 정렬실제 성능:힙 정렬: 이론적으로는 빠르지만, 캐시 지역성이 좋지 않아 실제 성능이 떨어질 수 있음Timsort: 실제 데이터에서 자주 발견되는 패턴을 잘 활용하여 평균적으로 더 빠른 성능을 보임 Java에서 Timsort를 사용하는 이유: 적응성- Timsort는 이미 정렬된 데이터나 부분적으로 정렬..

IoC (Inversion of Control)일반적으로 프로그램의 흐름은 각 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지를 결정한다. 제어의 역전은 이런 제어 흐름의 개념을 거꾸로 뒤집는 것. 제어의 역전에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하거나 생성하지 않는다. 또한, 자신도 어디서 어떻게 사용되는 지 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문 프레임워크는 제어의 역전 개념이 적용된 대표적인 기술프레임워크를 사용하면 객체의 생명 주기를 모두 프레임워크에 위임할 수 있다. 즉, 외부 라이브러리가 애플리케이션 코드를 호출하고, 흐름을 제어한다.라이브러리를 사용하는 애플리케이션 코드는 애플리케이션의 흐름을 직접 제..
Amazon S3Amazon S3는 AWS(Amazon Web Services)에서 제공하는 객체 스토리지 서비스로, 데이터를 인터넷 규모로 저장하고 검색할 수 있도록 설계되었다. 주요 기능과 특징안정성: S3는 높은 내구성과 가용성을 제공확장성: 데이터 양에 관계없이 자동으로 확장보안: 다양한 보안 기능(암호화, 접근 제어 등)을 제공유연한 데이터 모델: 파일을 객체로 저장하고, 각 객체는 고유한 키를 가진다.비용 효율성: 사용한 만큼만 비용을 지불하는 구조Pre-signed URLPre-signed URL은 특정한 S3 객체에 대한 제한된 시간 동안의 접근 권한을 부여하는 URL입니다. 이를 통해 S3 버킷에 저장된 파일을 안전하게 공유할 수 있습니다. Pre-signed URL을 사용하면, 파일을 ..

Cache 전략 패턴읽기 전략Look Aside직역하자면 옆을 보다 → 캐시에 없을 때, DB를 보고 읽어오는 것.동기화가 되지 않기 때문에 정합성 유지가 어려움첫 조회 시 DB 과부하가 발생한다. (항상 DB를 조회해야 하기 때문)Read Through 직역하자면, ~을 통해 읽다. → 항상 캐시를 통해서 읽는 것.캐시와 DB의 연결점이 있기 때문에 항상 정합성이 유지된다.단점으로는 캐시가 죽으면 전체 문제 발생(SPOF)쓰기 전략Write Around우회해서 쓰다 → 캐시를 우회해서 직접 쓰다.읽기랑 조합했을 때, 캐시 미스가 발생하면 CacheStore에도 씀성능이 좋다.불필요한 Data를 저장하지 않음단점은 캐시 디비에 연결점이 없기 때문에 정합성 문제Write Back나중에 쓰다.캐시에 미리 써..

CDN (Content Delivery Network)콘텐츠 전송 네트워크로, 전 세계적으로 분산된 서버 네트워크를 통해 콘텐츠를 효율적으로 전송하는 서비스.CDN은 웹사이트, 애플리케이션, 미디어 콘텐츠 등을 빠르고 안정적으로 제공하기 위해 사용된다. CDN의 주요 특징:엣지 로케이션: CDN이 콘텐츠를 캐싱하고 Client에게 제공하는 지점 혹은 캐시 서버를 의미. 엣지 로케이션은 사용자에게 가까운 위치에 배치되어 있어 콘텐츠에 빠르게 접근할 수 있도록 도와준다.캐싱: CDN은 콘텐츠를 엣지 서버에 캐시하여 사용자가 요청할 때마다 원본 서버로부터 콘텐츠를 다시 받아오지 않고도 제공한다. 이를 통해 네트워크 대역폭을 절약하고 응답 시간을 단축할 수 있다.로드 밸런싱: CDN은 트래픽을 여러 서버로 분산..