-
알고리즘 문제 접근 과정 4
알고리즘 문제 접근 과정 4 이번 포스트에서도 ‘알고리즘 문제 접근 방법’ 시리즈에서 진행했듯이 특정 문제를 해결하기 위해 가장 낮은 단계의 접근에서부터 최종 해법까지 해결해나가는 과정을 작성합니다. 최대한 다양한 유형의 문제들을 다루어, 많은 문제 유형에서의 접근 방법에 대한 실마리를 드리는 역할을 하려 합니다. 줄 세우기 - KOI 2013 지역본선 중등부 4번 관찰 최소한의 이동이라는 조건이 없을 때에, 우리는 어떻게 줄을 세울 수 있을까요? 우리는 1번부터 N번까지의 학생을 모두 순서대로 뒤로 보내거나, N번부터 1번까지의 학생을 모두 앞으로...
-
다른 사람의 코드의 문제점 찾아주기
개요 저는 백준 온라인 저지의 질문 게시판에서 풀라는 문제는 안 풀고 오랜 기간 많은 답변을 해왔습니다. 그러면서 느꼈던 것 중 하나는 문제 풀이 실력과는 별도로 처음 보는 코드를 분석하는 실력이 많이 늘었다는 점입니다. 예전에는 타인의 코드를 읽는 것이 마냥 어렵기만 했다면, 지금은 그 코드가 제 코딩 스타일과 크게 다르더라도 작성자의 의도를 파악하며 보다 객관적으로 코드를 읽는 능력이 향상되어 더 빠르게 답변을 해줄 수 있게 되었습니다. 부분적으로는 제 코드를 돌아보고 디버깅을 하는 데에도 도움이 됐다고 생각합니다....
-
PQ Tree (Part 1)
Table Of Contents Introduction Structure of a PQ Tree Construction of a PQ Tree Operation Reduce Leaf Node P Node Q Node Implementation Introduction 안녕하세요, Aeren입니다! 이번 글은 Codeforces Global Round 15에서 알게 된 PQ tree를 소개하는 첫 번째 글입니다. 어떤 finite set $U$와 $U$의 subset들의 집합 $C$가 주어졌을 때, $U$의 permutation $P$가 permissible하다는 것은, $S$의 각 원소 $T$에 대하여, $T$의 원소들이 $P$에서 연속적으로 나타나는 것을 의미합니다. PQ tree는 주어진 constraint $C$에 대하여 모든 permissible...
-
키보드 음성 키로거
1. Introduction 최근에 참가한 PBCTF 2021에서 Ghost Writers라는 이름의 문제를 보다가 굉장히 흥미로운 주제를 알게 되어 소개해드립니다. 특히 음성 인식과 머신 러닝에 관심이 많은 분이라면 좋은 연구 주제가 될 수 있다고 생각합니다. 트위치나 아프리카와 같은 플랫폼에서 여러 스트리머의 방송을 보다보면 마이크를 꺼두지 않는 한 방송 중에 기계식 키보드의 타이핑 소리가 그대로 송출이 되는 경우가 거의 대다수입니다. 이 타이핑 소리로부터 무언가 의미있는 정보를 얻기는 어려울 것 같지만, 혹시 지금 주변에 기계식 키보드가 있다면 여러 키를 눌러보았을...
-
Constructing a Distance Sensitivity Oracle in $O(n^{2.5794}M)$ Time
Constructing a Distance Sensitivity Oracle in $O(n^{2.5794}M)$ Time 가중치 있는 방향 그래프 $G$ 에서 두 정점 $s, t$ 가 쿼리로 주어질 때, $s$ 에서 $t$ 로 가는 최단 경로를 구하는 문제를 흔히 모든 쌍 최단 경로 문제 (All-Pair Shortest Path, APSP) 문제라고 부른다. APSP 문제는 그래프 이론의 기초적인 문제 중 하나로, Floyd-Warshall Algorithm을 사용하여 $O(n^3)$ 시간에 해결하는 방법이 아주 잘 알려져 있으며 알고리즘을 공부하다 보면 누구나 접하게 될 기초 알고리즘 중 하나이다. Floyd Warshall Algorithm은...