분류 전체보기 252

[MySQL] 조인 알고리즘 (Nested Loop Join, Hash Join)

1. Nested Loop JoinMySQL 서버에서 사용되는 대부분의 조인은 Nested Loop Join이다.조인의 연결 조건에 인덱스가 있는 경우 가장 일반적으로 사용되는 방식이다.이는 중첩된 반복 명령을 사용하는 것처럼 작동한다.for (row1 IN A) { for (row2 IN B) { if (condition_matched) return (row1, row2); }}2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 row를 결합하여 원하는 결과를 조합한다. 드라이빙 테이블(조인을 시작하는 외부 루프 테이블)에서 한 row씩 꺼내서 드리븐 테이블(내부 루프에서 탐색 대상이 되는 테이블)에서 그에 맞는 row들을 찾는 구조이다.✅ 드라이빙 테이블의 row 수가 많을 경우..

✏️/Database 2025.07.16

[DB] Pagination (Offset vs Cursor)

Pagination이란?데이터를 여러 페이지 단위로 묶어서 보여주는 기법1. Offset 기반 PaginationSELECT * FROM posts ORDER BY created_at DESC LIMIT 10 OFFSET 20;OFFSET과 LIMIT으로 원하는 페이지 구간을 잘라서 가져온다.OFFSET: 어디에서부터 데이터를 가져올 것인지?LIMIT: 몇 개를 가져올 것인지?페이지 버튼과 함께 사용할 때 유리함구현이 간단하고, 페이지 점프가 가능하다. SELECT * FROM posts ORDER BY created_at DESC LIMIT 40 OFFSET 0; SELECT * FROM posts ORDER BY created_at DESC LIMIT 40 OFFSET 40; SELECT * F..

✏️/Database 2025.07.16

[프로그래머스/Java] 징검다리 건너기

https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr for문(시간 초과), 슬라이딩 윈도우(시간 초과)카카오 공식 해설은 이분 탐색을 이용하라고 적혀 있었지만, 하기 싫었다. (..)질문 게시판을 보니, leetcode의 Sliding Window Maximum 문제와 유사하게 풀면 된다고 한다. import java.util.*;class Solution { public int solution(int[] stones, int k) { Deque deque = new Array..

[백준/Java] 전화번호 목록

https://www.acmicpc.net/problem/5052 전에 풀 땐 문자열 비교해서 풀었는데, 이번에 트라이 써보려고 풀었다. 트라이는 문자열 검색을 빠르게 할 수 있는 자료구조이다.자료가 정수형일 때 이진탐색트리가 O(logN)의 시간복잡도를 가지는데,문자열일 땐 문자열의 길이가 M이면 O(MlogN) 이다.이때 트라이를 이용하면 O(M)에 해결할 수 있다. import java.io.*;import java.util.*;public class boj5052 { private static class Trie { boolean isEnd = false; Map child = new HashMap(); public void add(String num) ..

[프로그래머스/Java] 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 잘 안 풀려서 결국 답지를 봤다... import java.util.*;class pg42746 { public String solution(int[] numbers) { String[] snumbers = Arrays.stream(numbers) .mapToObj(number -> String.valueOf(number)) .toArray(String[]::new); ..

[프로그래머스/Java] 캐시

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음 코드import java.util.*;class Solution { public int solution(int cacheSize, String[] cities) { if (cacheSize == 0) { return 5 * cities.length; } Deque deque = new ArrayDeque(); Set set = new HashSet()..

[프로그래머스/Java] 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 틀린 코드 import java.util.*;class Solution { private int answer = 0; private Map map1 = new HashMap(); private Map map2 = new HashMap(); private int cnt = 0; private int size; private int[] res; public int solution(S..

[프로그래머스/Java] 귤 고르기

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음 코드import java.util.*;public class Solution { private final int MAX = 10_000_000; private class Tangerine implements Comparable { private int type; private int cnt; public Tangerine(int type, int cnt) { th..

[프로그래머스/Java] 최솟값 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 틀린 코드 import java.util.*;import java.util.stream.*;class Solution{ public int solution(int []A, int []B) { List listA = Arrays.stream(A) .boxed() .collect(Collectors.toList())..