← 탐색

태그된 포스트: java

코테 브리핑 · ·3분 읽기

값이 10억이면 값을 버리고 순서를 써라

좌표 범위가 10^9인 문제를 처음 만나면 대부분 멈칫한다. 배열 크기를 10억으로 잡을 수는 없고, 해시맵을 쓰자니 구간 쿼리가 안 돌아간다.

좌표압축알고리즘코딩테스트
코테 브리핑 · ·4분 읽기

N이 20 이하면 일단 비트마스크를 의심하라

문제를 읽다가 제약 조건에 "N ≤ 20"이 적혀 있으면, 그 순간부터 비트마스크 DP를 떠올려야 한다. 이건 감이 아니라 공식에 가깝다.

비트마스크dp알고리즘코딩테스트
백엔드 깊이보기 · ·2분 읽기

10년 걸린 JEP 401이 DTO 하나에 미칠 영향

GC 로그를 열어보면 Young Gen에서 가장 많이 죽는 객체 유형은 대체로 비슷하다. OrderLineItem, PriceInfo, DateRange 같은 불변 DTO들.

javaproject-valhallajdk-28
코테 브리핑 · ·3분 읽기

"최솟값의 최댓값" 보이면 이분 탐색 꺼내라

코딩테스트 문제를 읽는데 "가장 큰 값 중 최소", "최소 거리의 최대" 같은 표현이 나온다. 뭔가 최적화 문제 같은데 그리디도 아니고 DP도 아닌 것 같고.

매개변수탐색이분탐색코딩테스트
코테 브리핑 · ·4분 읽기

스택 하나가 이중 for문을 이긴다

모노토닉 스택을 처음 봤을 때 "이게 왜 되지?" 싶었다.

monotonic-stack알고리즘코딩테스트
백엔드 깊이보기 · ·2분 읽기

ThreadLocal이 가상 스레드를 잡아먹는 구조

JDK 25로 올리고 가상 스레드를 켠 팀들이 공통적으로 보고하는 증상이 있다. 처리량은 올랐는데 힙 사용량이 비정상적으로 높다.

javajdk-25virtual-threads
코테 브리핑 · ·3분 읽기

가중치가 0 아니면 1이면 다익스트라 쓰지 마라

가중치 있는 최단 경로 문제를 보면 반사적으로 다익스트라부터 꺼내는 습관, 나도 그랬다. 근데 간선 비용이 0 아니면 1뿐인 그래프라면 힙 없이 deque 하나로 O(V+E)에 끝난다.

0-1-bfs최단경로알고리즘
코테 브리핑 · ·3분 읽기

같은 투 포인터인데 난이도가 3단계 차이나는 이유

LeetCode 3번을 20분 만에 풀고 자신감이 붙어서 76번으로 넘어갔다. 2시간을 썼다.

슬라이딩윈도우투포인터코딩테스트
백엔드 깊이보기 · ·3분 읽기

ShutdownOnFailure가 사라졌다 — 상속으로 만든 동시성 API의 한계

JDK 21부터 StructuredTaskScope를 써온 팀이라면, JDK 25 업그레이드에서 컴파일 에러를 각오해야 한다. ShutdownOnFailure와 ShutdownOnSuccess — 누구나 쓰던 두 클래스가 통째로 삭제됐다.

javajdk-25structured-concurrency
코테 브리핑 · ·4분 읽기

진입차수를 세는 순간 풀린다

코딩테스트 단골 유형 중에 이런 게 있다. "A를 먼저 끝내야 B를 시작할 수 있고, B를 끝내야 C를 시작할 수 있다.

위상정렬알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

N이 20 이하면 완전탐색이라더니

코테 문제의 제한 조건에 "1 ≤ N ≤ 20"이 보이면 "완전탐색이네" 하고 넘기는 사람이 많다. 반은 맞고 반은 틀리다.

비트마스크dp알고리즘코딩테스트
백엔드 깊이보기 · ·3분 읽기

ZGC 켰더니 메모리가 30% 늘었다 — G1을 버려도 되는 시점

운영 서버 JDK를 25로 올리면서 -XX:+UseZGC를 슬쩍 켜본 적 있는가. GC 멈춤이 사라진 건 좋았는데, 다음 날 모니터링 대시보드를 열어보니 RSS가 이전보다 30% 가까이 뛰어 있었다.

javajdk-25zgc
코테 브리핑 · ·3분 읽기

스택 하나로 N²을 N으로 줄이는 패턴

코테에서 "각 원소에 대해 오른쪽에서 처음으로 더 큰 값을 찾아라" 류의 문제를 만나면, 대부분 이중 for문부터 짠다. 돌아간다.

모노톤스택알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

"최솟값의 최댓값"이 보이면 이분 탐색이다

코테 문제를 읽다가 "최솟값의 최댓값을 구하시오"를 만나면 반사적으로 DFS를 꺼내는 사람이 많다. 모든 경우를 다 해보면 되니까.

parametric-search이분탐색코딩테스트
코테 브리핑 · ·4분 읽기

연결 여부만 묻는 문제에 BFS 돌리고 있었다

프로그래머스 "네트워크" 문제를 처음 풀었을 때 DFS로 연결 컴포넌트를 세는 코드를 짰다. 맞긴 맞았는데, 비슷한 문제가 나올 때마다 visited 배열 선언하고 재귀 돌리는 패턴을 반복하면서 뭔가 과하다는 느낌이 들었다.

union-find자료구조코딩테스트
코테 브리핑 · ·3분 읽기

0-1 BFS — 다익스트라 안 써도 되는 최단 경로가 있다

간선 가중치가 0 아니면 1이다. 다익스트라를 꺼내려는 손을 멈춰라.

0-1-bfs최단경로코딩테스트
코테 브리핑 · ·4분 읽기

위상정렬은 몰라서 못 푸는 게 아니다

코딩테스트에서 "위상정렬"이라는 단어가 문제에 직접 등장한 적이 있었나? 아마 없을 거다.

위상정렬그래프코딩테스트
코테 브리핑 · ·4분 읽기

N이 40이면 반으로 쪼개라

얼마 전에 "N이 20 이하면 비트마스크를 의심하라"는 글을 썼다. 그 글의 핵심은 간단했다 — 제약 조건에서 N의 크기를 보고 접근법을 결정하라는 것.

meet-in-the-middle완전탐색코딩테스트
백엔드 깊이보기 · ·3분 읽기

ScopedValue가 정식이 됐다 — ThreadLocal은 이제 기술 부채다

JDK 21에서 Virtual Thread를 켰을 때 다들 환호했다. 스레드 풀 걱정 없이 요청마다 스레드 하나씩 띄우면 되니까.

javascoped-valuethreadlocal
코테 브리핑 · ·3분 읽기

N이 20 이하면 비트마스크를 의심해라

"N의 범위가 1 ≤ N ≤ 20." 문제를 읽다가 이 조건을 만나면 멈칫해야 한다.

비트마스크dp코딩테스트
1 / 3 Next →