전체 글 219

백준 2468번: 안전 영역

핵심안전 영역을 구하기 위해 BFS 탐색비의 높이 = k 라고 가정할 때, 높이 > k인 지역들로만 BFS 탐색높이 기준을 0 ~ maxHeight까지 변경하면서 최대 안전 영역 개수를 갱신실수 주의 포인트비가 아예 안 오는 경우, 즉 k = 0도 반드시 고려해야 합니다.이걸 누락하면 테스트케이스는 통과해도 실제 채점에서 오답 날 수 있어요. import java.io.*;import java.util.*;public class Main { static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int[][] map; static boolean[][] visited; static int N; pub..

Algorithm 2025.04.09

백준 11403번: 경로 찾기(dfs, bfs)

[ 문제 ]가중치 없는 방향 그래프 G가 주어졌을 때, **모든 정점 (i, j)**에 대해서i에서 j로 가는 "길이가 양수인 경로"가 있는지 없는지를 구하는 문제입니다.이 문제는 그래프 탐색 기초부터 **플로이드 와샬 알고리즘(Floyd-Warshall)**의 개념까지 활용할 수 있어 알고리즘 학습 초중반에 아주 좋은 문제입니다. [ 핵심 개념 ]경로가 있다는 것은 간접 경로를 포함문제 조건의 "길이가 양수인" 경로란, 간선 1개 이상을 사용해서 도달 가능한 경우✨ 즉, i → j로 가는 직접 간선이 없어도, i → ... → j로 가는 간접 경로가 있으면 1주의할 점:i → i (자기 자신)도 경로가 사이클로 돌아오는 경우, 길이 1 이상이면 1로 출력해야 함 풀이: 플로이드-와샬 알고리즘이 문제는 ..

Algorithm 2025.04.09

데이터베이스 레플리케이션(Replication)이란?

서비스의 고가용성(High Availability)과 성능 향상은 모든 시스템 설계자가 고민하는 주제입니다. 특히 데이터베이스는 시스템의 핵심이기 때문에 장애 발생 시 피해가 막대할 수 있습니다. 이 문제를 해결하기 위한 방법 중 하나가 데이터베이스 레플리케이션입니다.1. 레플리케이션이란?**레플리케이션(Replication)**은 하나의 데이터베이스에 있는 데이터를 다른 데이터베이스로 복제하여 동기화하는 기술입니다. 일반적으로 하나의 마스터(Master) 또는 프라이머리(Primary) 데이터베이스에서 슬레이브(Slave) 또는 세컨더리(Secondary) 데이터베이스로 데이터를 복제합니다.이렇게 하면 읽기 부하 분산, 장애 복구, 데이터 백업 등의 다양한 목적을 달성할 수 있습니다.2. 왜 레플리케이..

DataBase 2025.04.09

HTTP 1.1, HTTP2.0, HTTP3.0 차이점

📌 HTTP 1.1, 2.0, 3.0 차이점 항목 HTTP/1.1HTTP/2.0HTTP/3.0도입 시기1999년2015년2022년 (RFC 9114)전송 방식텍스트 기반바이너리 프레이밍QUIC 기반 (UDP + TLS 통합)연결 방식TCPTCPUDP멀티플렉싱❌ (동시 요청 시 성능 저하)✅ (한 연결에 여러 스트림)✅ (헤드라인 블로킹 완전 제거)헤더 압축❌✅ (HPACK)✅ (QPACK)성능 문제HOL Blocking 발생헤더만 HOL BlockingHOL Blocking 완전 제거보안 (암호화)선택적 (TLS)선택적 (TLS)TLS 1.3 필수서버 푸시❌✅✅ (하지만 브라우저 지원은 축소 중)브라우저 지원✅ 모든 브라우저✅ 대부분 브라우저 지원✅ (Chrome, Firefox, Edge 등 최신 브..

Web 2025.04.09

멀티태스킹, 멀티프로세싱, 멀티스레딩 차이점

여러 작업을 동시에 수행하는 개념은 다양한 방식으로 구현될 수 있습니다. 대표적인 방식으로는 멀티태스킹(Multitasking), 멀티프로세스(Multiprocessing), 멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)이 있습니다. 이 글에서는 각각의 개념을 명확히 구분하고 차이점을 살펴보겠습니다.1. 멀티태스킹(Multitasking)멀티태스킹은 하나의 CPU에서 여러 작업을 동시에 수행하는 것처럼 보이도록 만드는 기술입니다. 현대 운영체제에서는 프로세스 스케줄러가 매우 빠르게 여러 프로세스를 전환(Switching)하여 실행하는 방식으로 멀티태스킹을 구현합니다.특징하나의 CPU에서 여러 작업을 처리하는 것처럼 보임 (시간 분할 방식)실제로는 여러 작업을 매우 빠..

CS 2025.04.03

컨텍스트 스위칭(Context Switching)이란?

1. 컨텍스트 스위칭이란?컨텍스트 스위칭(Context Switching) 은 CPU가 하나의 작업(프로세스 또는 스레드)에서 다른 작업으로 전환될 때 발생하는 과정입니다.운영체제는 멀티태스킹을 위해 여러 프로세스를 빠르게 전환해야 하며, 이를 위해 현재 실행 중인 프로세스의 상태(Context)를 저장하고, 새롭게 실행할 프로세스의 상태를 불러오는 작업이 필요합니다.2. 프로세스와 스레드의 차이컨텍스트 스위칭을 이해하려면 프로세스(Process) 와 스레드(Thread) 의 개념을 먼저 살펴볼 필요가 있습니다.구분프로세스(Process)스레드(Thread)정의실행 중인 프로그램의 인스턴스프로세스 내에서 실행되는 경량 프로세스주소 공간독립적인 주소 공간 가짐같은 프로세스 내에서 주소 공간 공유자원독립적인..

CS 2025.04.03

백준 2293번: 제출

[ 문제 설명 ]N가지 종류의 동전을 사용하여 가치의 합이 K원이 되도록 만들 때, 가능한 경우의 수를 구하는 문제입니다.동전의 구성은 같지만 순서가 다른 경우는 같은 경우로 간주합니다.동전은 여러 개 사용할 수 있습니다.[ 문제 해결 방법 ]✅ 기본적인 DP 접근법이 문제는 **동전의 조합 문제이므로 동적 계획법(DP)**을 활용해야 합니다.dp[i]: i원을 만드는 경우의 수점화식:dp[j] += dp[j - coin]초기값: dp[0] = 1 (0원을 만드는 방법은 아무 동전도 사용하지 않는 1가지 경우)3. 메모리 초과 문제 분석기본적인 DP 접근법으로 구현할 경우, 다음과 같은 실수가 발생할 수 있습니다.❌ 메모리 초과 원인불필요한 2차원 배열 사용dp[N][K] 형태로 2차원 배열을 사용하면 ..

Algorithm 2025.04.01

백준 1149번: RGB거리

RGB 거리 문제 풀이: 동적 계획법(DP) 활용이 문제는 N개의 집을 주어진 비용으로 칠하는 문제로, 각 집을 세 가지 색 중 하나로 칠할 수 있습니다. 다만, 두 집이 인접해 있을 경우, 두 집의 색이 같지 않도록 해야 하므로, 이를 해결하기 위해 동적 계획법(DP)을 사용합니다.문제 분석각 집을 빨간색, 초록색, 파란색 중 하나로 칠할 수 있으며, 각 색에 대한 비용이 다릅니다.N개의 집을 칠할 때, 인접한 두 집은 다른 색으로 칠해야 하므로, 최소 비용을 구하는 것이 목표입니다.해결 방법문제의 상태 정의:score[i][j]: i번째 집을 j색으로 칠하는 비용을 나타냅니다.dp[i][j]: i번째 집까지 칠할 때, j색으로 칠한 최소 비용을 기록합니다.점화식:dp[i][0] (i번째 집을 빨간색으..

Algorithm 2025.03.31

스프링 @Bean, @Configuration, @Component 이란?

1. 스프링 빈(Bean)이란?스프링 프레임워크에서 빈(Bean) 은 스프링 컨테이너가 관리하는 객체를 의미합니다. 일반적인 Java 객체와 동일하지만, 스프링의 IoC(Inversion of Control) 컨테이너에 의해 생성 및 관리됩니다.🔹 스프링 빈의 특징스프링 컨테이너가 직접 객체를 생성 및 관리싱글톤(Singleton)으로 관리 (기본 설정 시)DI(Dependency Injection, 의존성 주입) 지원필요할 때 스프링 컨테이너에서 빈을 가져와 사용 가능2. @Bean 어노테이션@Bean은 개발자가 직접 제어할 수 있는 방법으로 스프링 빈을 등록할 때 사용됩니다. 주로 @Configuration과 함께 사용되며, 메서드에 붙여서 해당 메서드가 반환하는 객체를 스프링 컨테이너가 관리하는 ..

Back_End/Spring 2025.03.31

DBCP(Database Connection Pool)이란?

DBCP(Database Connection Pool)는 데이터베이스와의 연결을 효율적으로 관리하기 위한 기술이다. 애플리케이션이 데이터베이스와 통신할 때, 매번 새로운 커넥션을 생성하고 해제하는 것은 성능에 부담을 준다. 이를 해결하기 위해 커넥션 풀(Connection Pool) 이라는 개념이 등장했다.커넥션 풀은 일정 개수의 데이터베이스 커넥션을 미리 생성해두고, 필요할 때 가져다 쓰고 반환하는 방식으로 동작한다. 이를 통해 애플리케이션 성능을 최적화하고, 데이터베이스 부하를 줄일 수 있다.DBCP가 필요한 이유1. 커넥션 생성 비용 절감데이터베이스 커넥션을 생성할 때는 네트워크 통신, 인증, 세션 설정 등의 과정이 필요하다.매 요청마다 커넥션을 생성하면 많은 리소스가 낭비된다.DBCP를 사용하면 ..

DataBase 2025.03.31