에라토스테네스의 체 - K번째 지워지는 수 구하기 (Java)📌 문제 개요백준 2960번 - 에라토스테네스의 체주어진 수 N까지의 자연수 중 소수를 찾는 에라토스테네스의 체 알고리즘을 이용해, K번째로 지워지는 수를 출력하는 문제입니다.단순히 소수를 찾는 것이 아니라 지워지는 순서에 집중해야 하므로, 구현에 주의가 필요합니다. 💻 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { ..
핵심안전 영역을 구하기 위해 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..
[ 문제 ]가중치 없는 방향 그래프 G가 주어졌을 때, **모든 정점 (i, j)**에 대해서i에서 j로 가는 "길이가 양수인 경로"가 있는지 없는지를 구하는 문제입니다.이 문제는 그래프 탐색 기초부터 **플로이드 와샬 알고리즘(Floyd-Warshall)**의 개념까지 활용할 수 있어 알고리즘 학습 초중반에 아주 좋은 문제입니다. [ 핵심 개념 ]경로가 있다는 것은 간접 경로를 포함문제 조건의 "길이가 양수인" 경로란, 간선 1개 이상을 사용해서 도달 가능한 경우✨ 즉, i → j로 가는 직접 간선이 없어도, i → ... → j로 가는 간접 경로가 있으면 1주의할 점:i → i (자기 자신)도 경로가 사이클로 돌아오는 경우, 길이 1 이상이면 1로 출력해야 함 풀이: 플로이드-와샬 알고리즘이 문제는 ..
서비스의 고가용성(High Availability)과 성능 향상은 모든 시스템 설계자가 고민하는 주제입니다. 특히 데이터베이스는 시스템의 핵심이기 때문에 장애 발생 시 피해가 막대할 수 있습니다. 이 문제를 해결하기 위한 방법 중 하나가 데이터베이스 레플리케이션입니다.1. 레플리케이션이란?**레플리케이션(Replication)**은 하나의 데이터베이스에 있는 데이터를 다른 데이터베이스로 복제하여 동기화하는 기술입니다. 일반적으로 하나의 마스터(Master) 또는 프라이머리(Primary) 데이터베이스에서 슬레이브(Slave) 또는 세컨더리(Secondary) 데이터베이스로 데이터를 복제합니다.이렇게 하면 읽기 부하 분산, 장애 복구, 데이터 백업 등의 다양한 목적을 달성할 수 있습니다.2. 왜 레플리케이..
📌 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 등 최신 브..
여러 작업을 동시에 수행하는 개념은 다양한 방식으로 구현될 수 있습니다. 대표적인 방식으로는 멀티태스킹(Multitasking), 멀티프로세스(Multiprocessing), 멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)이 있습니다. 이 글에서는 각각의 개념을 명확히 구분하고 차이점을 살펴보겠습니다.1. 멀티태스킹(Multitasking)멀티태스킹은 하나의 CPU에서 여러 작업을 동시에 수행하는 것처럼 보이도록 만드는 기술입니다. 현대 운영체제에서는 프로세스 스케줄러가 매우 빠르게 여러 프로세스를 전환(Switching)하여 실행하는 방식으로 멀티태스킹을 구현합니다.특징하나의 CPU에서 여러 작업을 처리하는 것처럼 보임 (시간 분할 방식)실제로는 여러 작업을 매우 빠..