Competitive Programming/Codeforces 44

대회후기: Codeforces Round #606 (Div. 2)

시험기간과 대회가 겹쳐 후기 작성이 다소 늦어지게 되었다. 시험 대비와 대회 참여 사이에서 조금은 고민했으나, 대회 시작 5분 전에 급하게 데스크탑을 켜고 레지스터를 마쳤다. A: Happy Birthday, Polycarp! 주어진 수 \(n\)보다 같거나 작은 자연수 중에서, 숫자 하나의 반복으로 이루어진 수의 개수를 출력하는 문제이다. 빠르게 구현하기 위해, 입력 \(n\)이 들어오면 \(n\)보다 자릿수가 같거나 작은 모든 '동일 숫자 반복으로 이루어진 수'를 \(n\)과 크기 비교하였다. 시간복잡도는 \(O(\log n)\)이다. 4분에 AC B: Make Them Odd 자연수의 배열이 들어올 때, 모두 홀수로 만들고자 한다. 홀수로 만들기 위한 연산은 특정 숫자를 골라 모든 occurrenc..

대회후기: Codeforces Round #603 (Div. 2)

이런 저런 일정으로 대회 참여를 못하다가, 오랜만에 복귀하게 되었다. 컨디션이 좋지 않아 평소보다는 못한 것 같지만, 레이팅 방어는 성공하였다. A: Sweet Problem 이번 대회에서 체감상 제일 어려웠던 문제다. 문제 description은 매우 간단한데, 최적의 solution을 찾는 방법을 떠올리지 못해 한참을 헤맸다. 결국 직관적으로 풀었는데, 방법이 맞았던 모양이다. 23분에 AC B: PIN Codes 최대 10개의 PIN code들을 서로 다른 code로 만들기 위한 최소 수정 횟수와 그 수정 결과를 출력하는 문제였다. 거의 문제를 보자마자 마지막 자릿수만 처리한다면 풀 수 있음을 알 수 있었다. 구현하는 것에 시간이 조금 소요되었다. 49분에 AC C: Everyone is a Win..

대회후기: Codeforces Round #600 (Div. 2)

AtCoder 대회를 뛰고 거의 연속으로 코포 대회를 진행했다. A: Single Push 간단한 문제이지만, 불일치하는 지점의 개수가 1인 경우에 대한 예외처리를 적절히 하지 않아 이를 급하게 수정하느라 조금의 지체가 있었다. 7분에 AC B: Silly Mistake 조건에 맞도록 주어진 배열을 분할할 수 있는지를 묻는 문제이다. 같은 사원이 같은 날에 두 번 enter할 수 없다는 조건을 놓치고 그냥 전체를 무조건 하루로 잡고 전체 배열이 조건에 맞는지 확인하는 코드를 짰다. 제출하고 WA. 다시 보고 문제점을 확인, 같은 사원이 다시 enter 하려고 하는 순간 새로운 날이 시작되도록 수정하였다. Pretests passed. 하지만 동일 사원이 다시 들어오려 할 때가 아니라, 모든 사원이 다 나..

대회후기: Educational Codeforces Round 76 (Rated for Div. 2)

일주일만에 Codeforces에서 대회를 뛰었다. 대회 직전에 잠깐 잠을 자다가 못 일어날뻔 했다. 시작 10분 전에 일어나서 데스크탑을 켜고 대회 start. A: Two Rival Students 1분 이내로 풀었어야 하는 쉬운 문제. 라이벌 두명을 이웃한 학생과 x번 swap해서 최대한 멀리 떨어뜨리는 문제이다. 그냥 거리를 x만큼 더 벌리면 된다. 하지만 문제를 잘못 읽어 이웃한 학생만 swap할 수 있다는 조건을 놓쳤다. WA 추가 && 6분 낭비 후 AC B: Magic Stick 주어진 두 operation의 특성을 보고, 일정 숫자 이상이면 모든 숫자를 만들 수 있음을 알아차리면 된다. 3 이하의 숫자로 시작할 때만 잘 처리하면 되는데, 경우를 예쁘게 나누지 못해 if else 코딩하느라 ..