전체 글
-
LeetCode: 22. Generate ParenthesesAlgorithm & Data Structure/LeetCode 2025. 10. 27. 17:01
22. Generate ParenthesesLeetCode 22번 문제인 Generate Parentheses는 괄호((, ))를 사용하여 올바른 조합만 생성하는 대표적인 백트래킹 문제입니다.문제 설명입력으로 n이 주어지면, n 쌍의 괄호로 만들 수 있는모든 잘 형성된(well-formed) 괄호 문자열을 반환해야 합니다.예시InputOutputn = 1["()"]n = 3["((()))","(()())","(())()","()(())","()()()"]핵심 개념올바른 괄호 문자열은 다음 조건을 만족합니다.여는 괄호 ( 개수는 n을 초과할 수 없다언제나 ) 개수 ≤ ( 개수 이어야 한다(닫는 괄호가 먼저 나오면 불가능)즉, 생성 과정에서 잘못된 탐색을 조기에 차단하면모든 경우를 탐색할 필요가 없습니다.이..
-
LeetCode: 17. Letter Combinations of a Phone NumberAlgorithm & Data Structure/LeetCode 2025. 10. 24. 21:52
LeetCode: 17. Letter Combinations of a Phone Number숫자 문자열 digits(2–9) 가 주어지면, 전화 키패드 매핑에 따라 만들 수 있는 모든 문자 조합을 구하는 문제입니다.예를 들어 "23" → ["ad","ae","af","bd","be","bf","cd","ce","cf"].이 글에서는 접근 방식(아이디어) → 코드 구조 → 시간/공간 복잡도 → 엣지 케이스 → 대안 풀이(BFS) 순서로 정리합니다. 마지막에 디버깅 팁과 테스트 케이스도 넣었습니다.문제 핵심 요약각 숫자(2–9)는 문자 집합에 매핑됨:2→abc, 3→def, 4→ghi, 5→jkl, 6→mno, 7→pqrs, 8→tuv, 9→wxyz목표: 각 자리에서 문자 1개씩 골라 모든 길이 digits..
-
static 변수와 메서드Back-End/Java 2025. 7. 10. 14:14
Java를 다루다 보면 static이라는 키워드를 마주치게 됩니다.처음엔 단순히 “공유된다”는 설명으로 접근하지만, 실무에선 객체지향 설계 철학과 메모리 구조, 그리고 테스트 전략까지 얽히기 때문에 더 깊은 이해가 필요합니다.static이란 무엇인가?static은 클래스 레벨에서 존재함을 의미합니다.즉, 객체 인스턴스를 생성하지 않고도 접근할 수 있으며, 모든 인스턴스가 공유합니다.static 변수 (클래스 변수)정의클래스가 메모리에 로딩될 때 JVM의 메서드 영역(Method Area) 에 단 한 번 할당됩니다.public class Counter { static int count = 0; public Counter() { count++; }}위 코드를 통해 new Coun..
-
오버로딩 (Overloading)과 오버라이딩 (Overriding)Back-End/Java 2025. 7. 9. 13:36
오버로딩 (Overloading)같은 이름의 메서드를 "매개변수만 다르게" 여러 개 정의하는 것 특징같은 클래스 안에서 발생메서드 이름은 같고, **매개변수(타입/개수/순서)**가 달라야 함반환 타입만 다르면 오버로딩이 안 됨 예시public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; }} ✔️ 같은 이름 add지만 매개변수가 다름 → 오버로딩오버라이딩 (Overr..
-
Spring: 빈(Bean)이란?Back-End/Spring 2025. 4. 11. 21:35
🫘 스프링의 빈이란? – 객체를 관리하는 스프링의 핵심 메커니즘“Spring에서 Bean이란, 단순한 객체가 아닙니다.생성부터 소멸까지, 프레임워크가 관리하는 살아있는 객체입니다.” 1. 들어가며 – 객체는 누가 관리하나요?Java 애플리케이션에서 객체를 생성하는 가장 기본적인 방법은 new 키워드를 사용하는 것입니다.MyService myService = new MyService();하지만 이 객체가 여러 클래스에서 공통으로 필요하다면, 매번 new로 만들면 비효율적이고, 객체 간 의존성이 복잡해지며, 테스트도 어려워집니다.이런 문제를 해결하기 위해 Spring은 IOC(제어의 역전, Inversion of Control) 이라는 개념을 도입합니다.객체를 직접 만들고 연결하지 않고, Spring이 ..
-
Elasticsearch: BULK란?Search & AI/Elasticsearch 2025. 3. 27. 09:56
🚀 Elasticsearch의 Bulk API란?📌 정의Bulk API는 여러 개의 요청(문서 생성, 수정, 삭제 등)을 한 번의 HTTP 요청으로 묶어서 처리할 수 있는 기능입니다.✅ "많은 문서를 빠르게 처리"하고 싶을 때 사용하는 대표 기능! 🤔 왜 Bulk이 필요할까?일반적인 방식:POST /index/_doc/1POST /index/_doc/2POST /index/_doc/3 ...→ 각 요청마다 네트워크 통신과 인덱싱 오버헤드가 발생Bulk 방식:POST /_bulk { "index": { "_index": "my_index", "_id": "1" } }{ "title": "algo", "professor": "kim" }{ "index": { "_index": "my_index", "_..
-
Elasticsearch란?Search & AI/Elasticsearch 2025. 3. 25. 22:40
1. Elasticsearch란 무엇인가?Elasticsearch는 오픈소스 분산 검색 엔진으로, Apache Lucene을 기반으로 만들어졌습니다. 단순한 텍스트 검색을 넘어서, 대규모의 정형/비정형 데이터에 대한 검색 및 분석을 실시간으로 처리할 수 있습니다. 로그 분석, 모니터링, 데이터 탐색, 검색 서비스 등 다양한 분야에서 핵심 인프라로 사용됩니다.✅ 핵심 키워드: Full-text search, 분산(Distributed), 실시간(Real-time), RESTful API 2. 철학: 검색을 중심으로 한 데이터 저장Elasticsearch의 가장 큰 철학은 "검색이 핵심이다"라는 것입니다. 일반적인 RDBMS는 데이터를 정규화된 형태로 저장하고 나중에 조회하지만, Elasticsearch는 ..
-
ELK Stack이란?Search & AI/ELK 2025. 3. 23. 14:04
로그 분석부터 검색 서비스까지 가능한 데이터 통합 플랫폼서비스를 운영하다 보면 로그는 쌓이고, 사용자들은 검색을 합니다.이 두 가지를 한 번에 해결해줄 수 있는 강력한 도구가 있습니다. 바로 ELK Stack입니다.이 글에서는 ELK Stack이 무엇인지, 왜 많은 개발자와 기업들이 사용하는지, 그리고 단순한 로그 분석을 넘어서 검색 서비스까지도 어떻게 구현 가능한지 쉽게 설명해드릴게요. 1. ELK Stack이란?ELK는 세 가지 오픈소스 도구의 조합입니다:이 세 가지를 함께 사용하면 로그를 수집 → 저장 → 검색 → 시각화하는 강력한 파이프라인이 완성됩니다.💡 최근에는 로그 수집을 더 가볍고 빠르게 하기 위해 Beats도 자주 함께 사용하며, 이들을 묶어 Elastic Stack이라고 부르기도 합니..