← 탐색

태그된 포스트: 알고리즘

코테 브리핑 · ·3분 읽기

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

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

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

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

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

비트마스크dp알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

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

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

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

정렬만 했는데 왜 맞았지

코딩테스트에서 정렬 한 번 하고 앞에서부터 쭉 훑었는데 정답이 뜬 경험, 다들 있을 거다. 근데 "왜 이게 맞아?

그리디교환논증코딩테스트
코테 브리핑 · ·4분 읽기

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

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

monotonic-stack알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

반으로 쪼개면 1조가 200만이 된다

N ≤ 20이면 비트마스크로 전수탐색이 가능하다는 건 많이들 안다. 2^20은 약 100만이니까.

meet-in-the-middle알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

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

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

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

당신이 외운 LIS 코드는 LIS를 구하지 않는다

코딩테스트 스터디에서 LIS(최장 증가 부분수열)를 다루면 항상 같은 순서로 진행된다. O(n²) DP부터 시작해서, "이건 느리니까" 하면서 O(n log n) 풀이를 소개하고, bisect_left 쓰는 코드를 보여주고, 끝.

lis알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

find()에 한 줄 추가하면 시간복잡도가 사라진다

코딩테스트에서 "두 노드가 같은 그룹인가?"라는 질문이 나오면, 많은 사람이 BFS나 DFS를 꺼낸다.

union-find알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

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

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

슬라이딩윈도우투포인터코딩테스트
코테 브리핑 · ·4분 읽기

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

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

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

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

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

비트마스크dp알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

그리디는 직감이 아니라 증명이다

문제를 읽었다. "아 이거 그리디네.

그리디알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

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

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

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

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

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

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

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

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

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

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

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

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

N이 40이면 반으로 쪼개라

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

meet-in-the-middle완전탐색코딩테스트
코테 브리핑 · ·3분 읽기

스택에 규칙 하나 넣었더니 O(n²)이 사라졌다

코딩테스트에서 "각 원소의 오른쪽에서 처음으로 나보다 큰 수를 찾아라" 같은 문제를 만나면, 본능적으로 이중 for문부터 떠올린다. 잘 돌아가고, 맞는 답도 나온다.

단조스택알고리즘코딩테스트
코테 브리핑 · ·3분 읽기

"답을 이분탐색한다" — 그 말이 이해될 때까지

스터디에서 누군가 "이거 답을 이분탐색하면 돼"라고 말한 순간, 고개를 끄덕이면서 속으로는 물음표가 떠오른 적 있을 거다. 이분탐색은 정렬된 배열에서 값을 찾는 건데, 답을 이분탐색한다는 게 대체 무슨 소리인가.

이분탐색매개변수탐색카카오
1 / 5 Next →