개요 입력 크기($N$)와 문제 조건(모듈러 연산 여부)에 따라 적절한 알고리즘 선택이 필요함 조합을 구하는 3가지 방법(팩토리얼, DP, 페르마의 소정리)을 비교하고 수학적 원리를 설명함 문제 식별 방법 전체 원소 중 순서에 상관없이 특정 개수를 선택하는 모든 경우의 수를 구함 정답의 크기가 매우 커서 모듈러 연산($\%...
나머지 연산과 구간 합
개요 알고리즘에서 구간 합(Prefix Sum)은 $O(N)$의 전처리를 통해 $O(1)$로 구간의 합을 구하는 도구임 여기에 나머지 연산(Modular Arithmetic)의 분배 법칙을 결합하면 복잡한 연산 과정을 줄이는 최적화가 가능함 이 글에서는 두 개념의 수학적 증명과 이를 통해 도출되는 동치 관계를 설명함 문제 식별 방...
[김영한의 실전 자바 기본편] 기본형과 참조형
기본형과 참조형 김영한님의 실전 자바 강의 중 기본형과 참조형 챕터를 학습하며 자바의 기본형과 참조형의 차이, 메모리 관리 방식(Stack, Heap), 그리고 변수 대입 시 값 복사와 참조값 복사의 차이를 정리함 기본형과 참조형의 차이 기본형 (Primitive Type) 사용하는 값을 변수에 직접 저장하는 데이터 타입 종...
[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 3장 성능을 좌우하는 DB 설계와 쿼리
💡해당 게시글은 최범균님의 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식'을 개인 공부목적으로 메모하였습니다. 3장에서 다루는 내용 성능과 DB의 관계 인덱스 설계 전략 조회 성능 개선 방법 주의사항 성능과 DB의 관계 성능에 핵심인 DB 성능 문제의 대부분은 DB에서 기인함 비효율적 쿼리 한 개가 ...
구간 합(Prefix Sum)이란?
개요 구간 합(Prefix Sum)과 합 배열은 배열의 특정 구간 합을 효율적으로 계산하기 위한 알고리즘 기법임 데이터가 많을 때 매번 반복문으로 합을 구하면 비효율적이므로 미리 누적 합을 계산해두고 $O(1)$에 조회하는 방식임 문제 식별 방법 배열의 값이 변경되지 않는 정적 배열(Static Array) 상황임 특정 구...
[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 2장 느려진 서비스 어디서부터 봐야할까
💡해당 게시글은 최범균님의 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식'을 개인 공부 목적으로 메모하였습니다. 2장에서 다루는 내용 서비스 성능 측정과 개선 방법 TPS, 응답 시간 등 성능 지표의 이해 서버 확장 전략 (수직/수평 확장) DB 커넥션 풀 관리 캐싱과 CDN을 통한 성능 최적화 핵심 개념 ...
Java의 배열 복사 System.arraycopy
개요 System.arraycopy는 Java에서 배열을 고속으로 복사하기 위한 네이티브 메서드 JVM 레벨에서 메모리를 직접 복사하여 가장 빠른 배열 복사 성능 제공 java.lang.System 클래스의 정적 메서드로 제공됨 C/C++ 기반으로 구현되어 일반 Java 메서드보다 훨씬 빠름 System.arraycopy 정의...
Java 입출력 및 파싱 방식 비교
개요 Scanner와 BufferedReader는 입력을 읽는 방식이 다름 StringTokenizer와 String.split()은 문자열을 분리하는 메커니즘이 다름 각 방식의 특성을 이해하고 상황에 맞게 선택하는 것이 성능 최적화의 핵심임 전체 프로세스 흐름 입력 단계 BufferedReader ...
배열(Array)과 리스트(List)의 차이
개요 배열과 리스트는 모두 여러 데이터를 저장하는 자료 구조이지만, 메모리 구조와 특성이 근본적으로 다름 배열은 고정 크기의 연속적인 메모리 공간을 사용하는 반면, 리스트는 동적 크기 조정이 가능한 자료 구조임 각각의 특성을 이해하고 상황에 맞게 선택하는 것이 성능 최적화의 핵심임 배열(Array)의 특징 정의 배열은 동...
[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 1장 들어가며
💡해당 게시글은 최범균님의 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식'을 개인 공부 목적으로 메모하였습니다. 1장에서 다루는 내용 코딩 능력만으로는 부족하며 시스템 동작 원리에 대한 기초 지식이 필요함을 강조 DB 커넥션 관리를 통해 리소스 관리의 중요성을 설명 핵심 개념 DB 커넥션 누수 문제 D...