본문 바로가기

Computer Science

(34)
2021-08-21 Problem Solving 이번에도 문제를 비교적 꾸준하게 풀었던 것 같다. 특히, 이번 주 부터는 ho94949님, dennisstar님과 함께 하루에 랜덤 문제 5개를 뽑아서 하나 이상 푸는 챌린지를 하고 있어서 (나 말고 나머지 두 분은 웬만해서 거의 다 풀긴 하는듯) 더 자극이 되었던 것 같다. 20986. Group Photo 1번부터 $i$번까지만 생각해주는 방식으로 DP를 할 수 있다. 이 DP를 효율적으로 하는 방법에 대해서 생각해보면 되는데, $i$ 앞에 $j$가 오는지의 여부를 $N^2$개의 쌍에 대해 전부 이차원 배열에 구해둔 뒤, $x$축과 $y$축 두 방향 모두에 대해서 prefix sum 전처리를 해두고 활용할 수 있다. 15759. Talent Show 1000을 곱해주는 귀찮은 부분은 따로 빼두고 생각..
2021-08-08 Problem Solving 오랜만에 문제 해결을 좀 해봤다. 18227. 성대나라의 물탱크 DFS ordering을 이용하여 트리를 직선으로 펼 수 있다. 구체적으로는, DFS에서 정점 $u$를 처음 방문하는 시각을 $in[u]$, 빠져나오는 시각을 $out[u]$라 할 때, $u$의 서브트리의 방문 시각은 $[in[u], out[u]]$ 범위에 속함을 알 수 있다. 이를 이용하면, 트리를 선형으로 다룰 수 있고, Binary Indexed Tree 와 같은 자료구조를 함께 얹어서 문제를 해결할 수 있다. (왜냐하면, 어떤 정점에 물이 차는 횟수는, 해당 정점을 루트 노드로 하는 서브 트리에 물을 채우려 시도하는 횟수와 같기 때문이다.) 참고로, DFS ordering을 이용하여 트리를 직선으로 펴는 테크닉은 여러 분야에 응용의 ..
2021-08-01 Problem Solving 한 동안 정신 없는 일정 때문에 알고리즘 문제 해결을 별로 하지 못했으나, 최근에 여유가 생겨 SCPC 대비도 해볼 겸 다시 잡기 시작했다. 이번에 해결한 문제들을 정리해본다. 어찌 뒤로 갈수록 풀이를 대충 적은 것 같다... 21586. Another Substring Query Problem 쿼리가 하나만 주어진다면 어떨까? 문자열 $S$에 특정한 패턴 $P$가 $k$ 번째로 등장하는 지점을 찾는 문제가 된다. 이는 라빈 핑거프린트를 이용하여 문자열을 해싱해놓은 후, $|P|$ 길이의 부분 문자열을 살펴보며 쉽게 해결할 수 있다. 이 경우, 전체 과정이 약 $O(|S| + |P|)$ 정도의 시간에 이루어진다. 그런데, 이 과정을 모든 쿼리에 대해 반복하게 된다면, $O(Q(|S| + |P|))$​ 정..
Generalized Sorting with Predictions 이 글에서는 Pinyan Lu 외 3인의 논문 "Generalized Sorting with Predictions"에 대해 소개합니다. 구사과님이 호스트 하는 스터디 #project_tcs 에서도 발표를 한 번 했는데, 발표 자료는 다음 링크에 있습니다. 오타가 많음에 유의하세요. 1. Generalized Sorting Problem 1.1. 문제의 정의 어떤 object들을 정렬하는 것은 컴퓨터 과학에 있어 매우 중요한 문제입니다. 일반적으로 우리가 (comparison-based) 정렬을 한다고 할 때, 우리는 임의의 원소 간의 "비교"가 가능한 상황을 상정합니다. Generalized sorting problem에서는 이 상황을 보다 일반화하여 일부 원소들 사이에는 비교 연산을 이용할 수 없는, ..
제2회 UNIST 알고리즘 프로그래밍 경진대회 Uni-CODE 2020 이번에 UNIST 알고리즘 프로그래밍 경진대회에 3문제를 출제했다. 출제와 검수의 전 과정을 도울 수 있어서 기뻤고, 좋은 경험이었던 것 같다. 간단한 풀이는 아래와 같고, 문제 채점은 다음 링크에서 할 수 있다. https://acmicpc.net/category/detail/2353 A. 트리플 소트 출제: queued_q 문제에서 주어진 swap 연산으로는 기우성이 같은 인덱스 끼리만 바꿀 수 있음을 알 수 있다. 고로, 홀수 번째 인덱스와 짝수 번째 인덱스를 별개로 생각해볼 수 있다. 버블 소트를 생각해보면, 인접한 인덱스의 스왑 연산으로는 모든 배열을 정렬할 수 있음을 알 수 있다. 따라서, 홀수 번째 인덱스에는 홀수만, 짝수 번째 인덱스에는 짝수만 있는 것이 정렬 가능할 필요충분조건임을 알 수..
SCPC 2020 짧은 후기 1차 예선 SCPC 1차 예선은 무난하게 통과했던 것 같아서 별 기억이 없습니다. 100 / 150 / 150 / 39 / 0을 받았습니다. 2차 예선 SCPC 2차 예선은 건강검진 예약일과 겹쳐서 많은 시간을 투자하지는 못했습니다. C번 문제가 풀이 자체는 쉬우나, 상수가 큰 풀이는 통과하지 못하는 빡빡한 제한이라 해결하지 못했던 점이 아쉬웠습니다. 100 / 150 / 61 / 41 / 47을 받았습니다. 본선 본선에 갈 것이라고 생각하지 못했지만, 본선에 참가하게 되었습니다. 본선 문제를 보니 생각보다 어려워 보여서, 점수만 열심히 긁어도 상은 받을 수 있다고 생각했습니다. 1번 문제는 쉬워서 간단히 100점을 받았습니다. 2번 문제는 지문이 더러워서 뭐 하라는건지 한참을 고민했는데, 결국 SCC를..
ICPC 2020 Seoul Regional 후기 이채준, 신민철 님과 함께 참가한 대학생 프로그래밍 경시대회에서 8솔브 / 1303분으로 전체 10등을 했고, 학내에서는 2등을 했다. 좋았던 점과 아쉬운 점 모두 있지만, 팀원들에게 수고했다는 말을 해주고 싶고, 우리 팀에 미래가 있다는 사실을 확인했다는 점이 너무나 좋았다. 사실 우리 팀은 인터넷 예선을 앞두고 팀 연습 1번, 인터넷 예선 이후에 팀 연습을 아예 안 할 정도로 별 준비 없이 봤음에도 불구하고, 전체 팀들 가운데 10등을 차지한 것은 사실 꽤나 잘한 성과라고 생각한다. 하지만, 인터넷 예선에서 운 좋게 8등을 한 덕택에 (객관적 실력상 진출이 힘듬이 명백한) 세계 대회에 갈 수 있다는 행복 회로를 돌리던 것은 썩 좋게 작용하지만은 않은 것 같다. 아무튼, 별 준비 없이 전체 10등은 나..
Minimums on the Edges 풀이 최근에 푼 문제 중 가장 재미있는 것 같아서 풀이를 기록해둔다. Link: www.acmicpc.net/problem/18664 18664번: Minimums on the Edges Print n numbers a1, a2, . . . , an (0 ≤ ai ≤ s), where ai is the number of tokens you put on the i-th vertex. The sum of printed integers must be equal to s. The sum of capacities of all edges must be the maximum possible. If there are multiple optimal www.acmicpc.net $N$개의 정점이 있고, $M$개의 간선 $(u_..
ICPC 2020 Seoul Regional 예선 후기 8솔브 / 563분 으로 전체 8등을 했고, 학내에서는 1등을 했다! (5등 팀은 휴학생 팀이기 때문이다.) 대회를 치기 전 사실 대회를 치기 전에 걱정이 많았다. 대충 아래와 같다. 다른 팀들은 모든 팀원이 최소 오렌지인데, 우리 팀은 내가 퍼플이다. 같은 학교 팀들 중 절반 이내에 들어야 리저널에 가는데, 이번에 대회가 온라인으로 개최되면서 웬만큼 PS에 관심 있는 팀이 아니면 참가 신청을 하지 않았다. 팀원 모두가 각자 할 일이 있어서 팀연습을 한 번 밖에 못했다. (교내대회 포함하면 두 번) 내가 최근에 수면에 있어 큰 어려움을 겪어서 컨디션이 굉장히 안좋았다. 그럼에도 불구하고 우리 팀이 잘 칠 수 있다는 근거 있는 자신감도 있었다. 전날 친 KAIST 교내 대회에서 8솔브 / 6등을 했고, 위..
2020 선린 정보 알고리즘경시대회 올해 선린인터넷고등학교의 교내 정보경시대회를 출제하게 되었다. 출제는 김준원님, 권욱제님과 함께 했으며, 정종인님이 서버 관리를 맡아주셨다. 일정이 워낙 촉박해서 대회 진행에 있어 다소 아쉬운 점이 있었으나, 문제 자체의 질은 괜찮다고 생각한다. 간단한 문제 해설과 함께 본인이 출제한 문제에 대해서는 출제 의도, 본인이 출제하지 않은 문제에 대해서는 출제 의도가 아닌 예상 난이도를 적어둔다. 문제는 BOJ에서 해결할 수 있다. 문제 풀이 A. 헛간 청약 출제: wookje 예상 난이도: Bronze IV - Bronze III 정답이 최대 $N$임에 유의하여 해결하면 된다. $\lfloor W/L \rfloor \times \lfloor H/L \rfloor$가 가장 많이 등장한 오답 중 하나였다. B...