
mashup 기능을 적극적으로 이용해서 트레이닝을 하기로 했다. 방식은 다음과 같다. 1. 코드포스 난이도 기준 2100 - 2200 - 2300 - 2400 4문제를 랜덤하게 뽑아서 구성한 셋을 2시간동안 돈다. 2. 여기서 못 푼 문제는 unsolved set A에 들어간다. 3. unsolved set A에 쌓인 문제가 3개가 되면, 이 문제 3개를 모은 셋을 다시 2시간동안 돈다. 4. 여기서 못 푼 문제는 unsolved set B에 들어간다. 5. unsolved set B에 쌓인 문제가 2개가 되면, 2시간 2문제 셋을 돈다. 6. 여기서 못 푼 문제는 unsolved set C에 들어간다. 7. unsolved set C에 쌓인 문제는 풀이를 보고 푼 뒤 정리하고 넘어간다. 일단 이렇게 진..
참가자: 남현욱(jwvg0425), 최기원(ckw1140), 구재현(koosaga) 일시: 2019년 12월 1일 오후 4시 ~ 9시 https://codeforces.com/contest/1267/standings Standings - 2019-2020 ICPC, NERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred) - Codeforces codeforces.com 날짜가 딱 NERC 2019랑 겹쳐서 NERC 미러를 돌았다. 나는 ckw1140님이랑 팀하고, koosaga님은 다른 분들이랑 온라인으로 팀해서 참가. 나랑 ckw1140님 팀은 미러 스탠딩 47등, 8솔브 패널티 1138로 끝났다. 2인 팀으..
수학에서 하도 자주 얻어맞아서, 이제 두드려 맞을 때마다 어디서 머리가 깨졌는지 적어놓기로 했다. 오늘은 https://codeforces.com/problemset/problem/757/E 이 문제를 풀다 막혔는데, 어느 정도 성질을 찾은 다음 그걸로 최적화하려고 한참 애쓰다 실패했다. 그리고 힌트를 좀 얻고 싶어서 breakun님에게 수학 찬스를 쓴 결과.. 어느 정도의 사전 지식이 필요하다는 것을 알게 됐다. 이 문제를 해결하기 위해 필요했던 multiplicative function에 관한 성질을 아래에 정리해둔다. 정의 어떤 양의 정수 $n$ 에 대해, $ab = n, gcd(a, b) =1$ 이라고 하자. 이런 모든 $a, b$에 대해 $f(n) = f(a)f(b)$ 가 성립할 경우 함수 $f..
ICPC 2019 서울 리저널 본선을 미러로 참가하고 난 후에, 미러에 같이 팀으로 참가했던 백진언(breakun)님이랑 같이 저녁을 먹으며 이런저런 이야기를 했었다. 어쩌다가 직장인 그랜드마스터(레드코더)를 목표로 같이 일요일에 모여서 꾸준히 공부하면 좋지 않을까 하는 것까지 이야기가 흘러갔고 이게 판이 커져서 head breaker(문제 풀다 뚝배기 깨지는 모임이라는 뜻)라는 모임이 되었다. 매주 모이면 너무 힘드니 2~3주마다 한 번씩 오프라인으로 모여서 아주 어려운 문제를 긴 시간을 들여 고민하는 종류의 모임을 하는 방향으로 정해졌고, 11월 17일 첫 모임을 가졌다. 귀찮아서 미루다보니 정리가 좀 늦어진 감이 있는데 아무튼 지금이라도 정리해둔다. 참가자: 남현욱(jwvg0425), 백진언(bre..
https://codeforces.com/profile/haskell_brooks_curry 이 계정도 퍼플 찍는 거 목표로 슬슬 연습해야 할 것 같아서 풀기 시작. 하스켈은 문제 푸는 기본 템플릿 형태를 어떻게 해야하나 고민을 좀 많이 했는데 일단 아래와 같은 방식으로 정했다. input - output - solve 세 가지를 구현하는 형태인데 이게 그나마 젤 편한 듯. solve가 튜플을 인자로 받아야하는게 쪼끔 불만이긴 한데 더 나은 방법을 잘 모르겠다. 일단 이대로 쓰고 더 나은 방법 생각나면 고치자 https://codeforces.com/group/DEuKcKDfls/contest/227543 주말 스터디에서 진행했던 셋을 갖고 연습을 하기로 했다. 일단 먼 옛날에 했던 1라운드 문제부터 하..

$N$개의 숫자로 이루어진 배열이 주어진다($N \le 3000$). 각 숫자는 $1$이상 $3000$ 이하의 정수다. 이 때, 한 번의 연산을 통해 배열에서 임의 위치의 숫자 값을 $1$ 증가시키거나 $1$ 감소시킬 수 있다. 연산을 적용한 후에도 배열의 각 위치의 값은 $1$ 이상 $3000$이하여야 한다. 주어진 배열을 오름차순으로 만들기 위해 최소 몇 번의 연산이 필요할까? 예를 들어, 2 3 9 7 9 가 주어질 경우 3번의 연산을 통해 2 3 7 8 9 로 바꿔 오름차순을 만들 수 있고 이 경우가 최소다. 위 문제는 아주 간단한 DP로 풀 수 있다. - $DP(x, k)$ = 배열의 $x$번째 위치의 값이 $k$일 때, 배열의 $1 \dots x$번째 숫자를 오름차순으로 만들기 위한 최소 연산..

오늘은 태수님의 휴가 일정에 맞춰 오후 반차를 쓰고 둘이서 팀연습을 돌았다. 승원님은 아쉽게도 일정상 참여할 수가 없어서 참여하지 못함. 둘이서 도는 거라 그냥 각각 컴퓨터 써서 풀었다. 목표는 9솔브였는데 8솔브로 끝난게 좀 아쉽다. 아래는 타임 라인에 따른 정리 00:06 J WA 태수님이 문제 쭉 읽어보시더니 J가 쉽다고 바로 작성해서 제출. 하지만 WA 00:08, 00:09 J WA 이어서 연달아 뭔가 이상한 실수를 반복했고 ㅋㅋ 여기서 그냥 패널티는 포기하자고 이야기했다. 00:09 J AC 4번째 시도 끝에 AC. 우리가 퍼스트 솔브였다. 00:17 H AC 이어서 태수님이 H도 빠르게 솔브. 00:23 B WA 나는 태수님이 다른 문제 풀 동안 B를 계속 붙잡고 있었다. 제출했지만 WA....

오늘은 NEERC 08을 셋으로 돌았다. 꾸사가님이 2시간 패널티 주고 시작했는데도 패배... A번 실수 오차의 벽을 넘지 못한게 너무 안타까웠다. 당시 대회에서 8솔브가 월파 컷이었다고 해서 꼭 8솔브하고 싶었는데.. 많이 아쉽다. 그래도 실수 오차같은 건 연습 때 겪어봐야 나중에 같은 실수를 안 하니 배운 건 많은 연습이었다고 생각. 실제 대회에서 진짜 저렇게 실수 오차에 털려서 망했으면 얼마나 기분이 참담했을 지 생각해보면.. 그 외에 좀 만족스러운 점은, 저번에 패널티를 너무 많이 먹었던 것과 다르게 이번에는 거의 실수 없이 잘 풀었다는 점이다. 오늘은 풀이 짜고 코딩 들어가기 전에 반드시 팀원과 풀이를 한 번 공유한 후 잘못된 점 체크하기 + 제출 직전에 한 번 더 테스트 케이스 생각해보고 제출..

매주 일요일 오후 1시 ~ 5시까지 4시간동안 12문제를 푸는 연습을 하고 있다. 코드포스에서 난이도 1700,1800,2300,2400 각각 한 문제씩 4개, 1900~2200까지는 각각 두 문제씩 8개 해서 12문제 셋으로. 지금 목표는 4시간동안 10솔브 이상을 꾸준히 하게 되는 실력을 쌓는 것. 업솔빙은 꾸준히 하고 있는데 업솔빙보다도 대회 시간중에 내가 어떻게 풀었고 뭘 개선해야할지를 복기하는게 좋을 것 같아 했던 연습들 진행 과정을 전부 글로 정리해두려고 한다. 1라운드는 문제 선정이 좀 잘못돼어서 10문제 풀긴 했는데 별 의미는 없는 듯. 아래는 타임 라인에 따른 문제 풀이 복기. 00:03 J AC : 문제 길이 짧은 것부터 쭉 읽어보니 J가 너무 말도 안 되게 쉬운 문제였음. 바로 AC...