/ problem solving archive함께 풀고,
함께 풀고,
더 깊이 이해하기.
코딩테스트 문제 풀이와 알고리즘 학습 과정을 함께 기록합니다.
solution archive01KO + EN
최대 10^12개의 방을 배열로 만들지 않고, 배정된 방만 Union-Find로 관리한다. 각 연속 점유 구간의 오른쪽 끝을 저장해 다음 빈 방을 찾는다.
원형 배치 때문에 양 끝집을 동시에 고를 수 없는 조건을 두 선형 DP로 나눈다. 반열린 구간과 이전 두 상태만 사용해 백만 채 입력도 추가 배열 없이 처리한다.
닫는 괄호가 여는 괄호 수를 넘지 않는다는 접두 불변식으로 잘못된 문자열 가지를 미리 자른다. n쌍의 괄호 조합만 한 번씩 생성하는 백트래킹을 설명한다.
역순 숫자 연결 리스트는 머리부터 읽는 순서가 세로 덧셈 순서와 같다. 길이가 다른 두 리스트와 마지막 올림까지 한 번의 순회로 처리한다.
LeetCode 981 Time Based Key-Value Store에서 키별 timestamp 이력을 저장하고, 조회 시각 이하의 가장 최근 기록을 이분 탐색으로 찾는다. set은 평균 O(1), 키별 기록이 k개일 때 get은 O(log k)다.
LeetCode 20 Valid Parentheses에서 여는 괄호를 스택에 쌓고 닫는 괄호의 짝과 순서를 확인한다. 한 번 순회해 O(n) 시간과 O(n) 공간에 중첩 구조를 검증한다.
프로그래머스 주식가격에서 아직 하락 시점을 만나지 않은 인덱스를 단조 스택에 보관한다. 가격이 처음 낮아질 때 지속 시간을 확정해 모든 시점을 O(n)에 처리한다.