우선순위 큐우선순위 큐 (Priority Queue)는 요소들이 우선순위에 따라 처리되는 자료구조입니다. 기본적으로 큐와 비슷하게 동작하지만, 큐는 FIFO 방식으로 작동하는 반면, 우선순위 큐는 요소들이 삽입된 순서와 상관없이 우선순위가 높은 요소가 먼저 처리됩니다. Java에서 우선순위 큐는 PriorityQueue 클래스를 통해 제공됩니다. 이 클래스는 내부적으로 최소 힙을 사용하여 요소들을 정렬하며, 기본적으로 요소들의 자연 순서(예: 숫자는 오름차순, 문자열은 알파벳 순)로 정렬됩니다. 커스텀 우선순위가 필요하면 Comparator를 사용하여 정의할 수 있습니다.우선순위 큐 특징1. 요소를 삽입할 때 우선순위에 따라 자동 정렬됩니다.2. 기본적으로 최솟값을 먼저 반환합니다.3. O(1)로 우선순..
1. Global Exception HandlerGlobalExceptionHandler는 애플리케이션에서 발생하는 다양한 예외를 중앙에서 관리하고 처리하기 위한 클래스입니다. Spring에서는 @RestControllerAdvice와 @ExceptionHandler를 활용하여 전역 예외 처리를 구현합니다.주요 기능특정 예외(CoreException)에 대해 맞춤형 응답을 반환.예외의 종류에 따라 적절한 HTTP 상태 코드를 매핑.애플리케이션의 나머지 부분에 영향을 주지 않고 예외를 처리하며 로그를 기록.예상치 못한 예외는 handleAllExceptions에서 처리.@Slf4j@RestControllerAdvicepublic class GlobalExceptionHandler extends Respon..
캐시(Cache) 란?캐시는 자주 사용되는 데이터를 임시로 저장하여, 속도를 향상하고 시스템 부하를 줄이는 역할을 합니다. 데이터베이스나 다른 외부 저장소에서 데이터를 직접 조회할 때 발생하는 시간 지연을 줄이기 위해 자주 액세스하는 데이터를 메모리나 다른 빠른 저장소에 보관합니다. 캐시 사용 이유자주 요청되는 데이터를 캐시에 저장하여, 반복된 데이터 접근 시 외부 데이터 소스를 조회하는 대신 빠르게 응답할 수 있다.캐시를 사용하면 데이터베이스나 다른 서버와의 통신을 최소화할 수 있어 시스템 자원 사용을 효율적으로 관리할 수 있다.캐시를 유용하게 사용하려면동일한 데이터에 대해 반복적으로 액세스 하는 상황이 많을 때 사용하는 것이 좋다.변경이 적은 데이터일수록 캐시를 사용할 때 더 효율적이다.로컬 캐시 글..
탐욕법은 문제를 해결할 때 현재 단계에서 가장 최선의 선택을 반복적으로 수행하여, 전체 최적해(Optimal solution)에 도달하려고 하는 알고리즘입니다.탐욕법의 핵심 개념1. 탐욕 선택 속성현재 단계에서 가장 최선의 선택을 함으로써 최적해를 구할 수 있는 속성.탐욕적 선택이 전체 문제에 영향을 미치지 않고 독립적이어야 함.2. 최적 부분 구조문제의 최적해가 부문 문제의 최적해로 구성되어야 함.동적 계획법(DP)에서도 사용되는 개념으로, 탐욕범의 필수 조건 중 하나.탐욕법의 장단점장점단순성과 효율성: 구현이 쉽고, 문제를 빠르게 해결할 수 있음.속도: 동적 계획법이나 완전 탐색 보다 일반적으로 더 빠름.단점최적해 보장 불가: 모든 경우에서 최적해를 보장하지 않음.문제에 대한 제약 조건 필요: 탐욕 ..
동시성(Concurrency)동시성은 단일 코어에서 시간 분할을 통해 여러 스레드를 번갈아 수행하여 동시에 작업이 처리되는 것처럼 보이게 만드는 개념이다. I/O 작업(사용자 입력, 네트워크 요청, 파일 입출력 등) 중 CPU가 유휴 상태일 때 context switching으로 다른 스레드 작업을 처리하여 효율성을 높일 수 있다. 이를 통해 서버는 여러 클라이언트 요청을 동시에 처리할 수 있지만, 동시성 환경에서는 Deadlock, Race Condition, Starvation 등의 문제가 발생할 수 있어 신중한 설계가 필요하다.비관적 락특징: 다른 트랜잭션이 해당 데이터에 접근하려고 하면 락이 해제될 때까지 기다리게 한다.장점: 데이터 충돌을 방지하여 트랜잭션이 실패할 위험이 적고 데이터의 일관성과..

인덱스가 무엇인가요?RDBMS에서 테이블의 검색 속도를 높이기 위해 사용하는 자료 구조입니다. 테이블 내의 하나 또는 여러 개의 열을 기반으로 생성되며, 특정 열에 대해 데이터를 정렬하거나 검색 효율을 높이는 역할을 합니다. 인덱스를 사용하면 Full Table Scan을 피하고, 필요한 데이터를 더 빠르게 찾을 수 있습니다. 주로 B-Tree, Hash 등의 알고리즘을 활용하여 구현되며, 검색 속도 향상뿐만 아니라 레코드 접근의 효율성을 높이는 기초를 제공합니다. Full Table Scan: 테이블의 모든 행을 확인인덱스가 동작하는 원리데이터베이스에서 특정 열을 검색할 때, 쿼리 옵티마이저(Query Optimizer)가 인덱스를 사용할지를 판단합니다. 옵티마이저는 SQL을 가장 빠르고 효율적으로 수..

https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr처음 문제를 봤을 때 중첩된 반복문으로 해결할 수 있을 거라 생각함. 코드 해설첫 번째 반복문에서 각 요소를 순회하고, 두 번째 반복문에서 해당 요소의 뒤에 있는 값들과 비교하여 첫 번째로 큰 값을 찾습니다. "다음 큰 수"를 찾을 때마다 두 번째 반복문을 종료하고, 결과를 저장합니다. 작성했던 코드class Solution { public int[] solution(int[] numbers) { int[] answer = n..
- Total
- Today
- Yesterday
- bool
- If
- isdigit
- counter
- operators
- Method
- Upper
- function
- Lambda
- zip
- Lower
- for
- isalpha
- Python
- combinations
- index
- permutations
- find
- Built-in Functions
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |