본문 바로가기

기타/공부 일지

2020년 8월 공부일지

반응형

[푼 문제]

 

 

1. BOJ 110문제 (598 solved)

 

2. Codeforces 11회 참여 (New Account!  Rating 625)

 

 - Round #661 (Div. 3) / Round #662 (Div. 2) / Round #663 (DIv. 2) / #Round 664 (Div. 2) / Educational Round 93 /     Global Round 10 / Round #665 (Div. 2) / Educational Round 94 / Round #666 (Div. 2) 

 

 - virtual participant : Round #656 (Div. 3) / Educational Round 87 

 

 

3. Atcoder 1회 참여 (Rating 199)

 

 - Atcoder Beginner Contest 177

 

 

4. SUAPC (신촌 대학 연합 프로그래밍 대회) 참여

 

5. Google KickStart Round E 참여

 

6. SCPC 예선 1 Round 참여

 

7. Facebook HackerCup 1 Round 참여

 

8. 신촌 ICPC 여름 캠프 중간 모의고사 참여

 

9. 신촌 ICPC 여름 캠프 최종 모의고사 참여

 

 

[공부한 개념] 

 

1. Segment Tree

 

2. 정수론 (Number Theory)

 

3. 조합론 (Combinatorics)

 

4. SCC (Strongly Connected Component) & 위상 정렬

 

5. 유량 알고리즘 (Network Flow)

 

6. 이분 매칭 (Bipartite Matching)

 

7. 문자열 검색 (KMP, 해싱)

 

 


순식간에 지나간 8월이었다. 많이 공부한 것 같기도 하면서 안 한 것 같기도 하고, 실력이 는 것 같기도 하면서 그대로 인듯한 기분이다. 그래도 정말 뭔가 많이 하긴 했다. 대회도 많이 참여하고, 문제도 많이 풀고. 

 

신촌 ICPC 연합 여름 캠프가 드디어 끝났다. 7월에는 일주일에 하나씩 강의가 진행되어서 충분히 진도를 따라가고도 남았는데, 8월부터 일주일에 2개씩 강의가 진행되다 보니 강의와 문제들을 다 따라가기가 조금 힘들었다. 나름대로 열심히 했지만 다른 대회나 코포라운드들이 섞이니 시간이 많지는 않았다. 그래도 약 1 달반 동안 PS에서 쓰이는 기본적인 알고리즘들에 대해서 한번 쭉 배워볼 수 있었던 좋은 경험이었다. 

 

고난도를 제외한 알고리즘은 어느 정도 학습이 되었으니 이제부터는 혼자서 공부하는게 더 중요한 것 같다. 어느정도 문제를 보면 어떤 알고리즘이 이용되고, 어떻게 구현을 해야 한다는 것이 생각이 들지만, 구체적으로 코드를 작성하는 부분에서 부족함이 느껴진다. SCC는 만들어놓고 BFS를 못 돌려서 문제를 못 푼다던지... 기본적인 부분에서 여러 구멍이 있는 것 같아서 9월부터 종만북을 다시 정복해보려고 한다. 

첫 번째는 아예 이해가 안 돼서 포기했고, 두 번째는 공부하고 싶은 부분만 골라서 공부했지만, 세 번째 지금 상황에서는 그래도 이해할 수 있지 않을까..?

9월 한 달 동안 완독 하는 게 목표다. 나름 종만북에 있는 알고리즘의 50~60프로는 알고 있는 부분이니 구멍을 채운다는 생각으로 공부를 해봐야겠다. 

 

그리고 핸들을 하나 만들었다. 'Rebro'

원래는 그냥 실력이 좋으면 아이디도 멋있어진다는 마인드였는데, pjh가 포함된 아이디가 생각보다 많아서 나만의 핸들을 하나 지어봤다. 물론 아무렇게나 짓는 거 보단 그래도 나랑 연관되게 짓자고 해서 내 이름을 그대로 직역한 'Re', 'bro'로 만들었다. 코포랑 앳코더 핸들을 모두 만들어서 새롭게 BOJ에 연동시켜놓으니 뭔가 새 출발을 하는 기분이 든다. 9월부터 다시 새롭게 시작해보자...!

 


일단 8월에 야심 차게 세웠던 목표인 Codeforces 블루는 근처도 가지 못했다. 오히려 처음 시작할 때도 가지 않았던 점수로 떨어지게 되었다. 이땐 정말 짜증을 넘어서 해탈의 경지에 도달했던 것 같다. 몇 달간 공부를 그렇게 했는데 더 떨어지다니.... 이후에 마음을 가라앉히고 내 문제점이 뭔지 한동안 찾아보고 생각해본 결과 몇 가지가 나왔다. (코포에 한해서)

 

1. 코포는 코포로 공부해야 한다. 그런데 나는 코포를 테스트용으로만 이용해왔다. 

 

많은 사람들이 얘기하길, 코포 레이팅을 올리기 위해서는 물론 기초 알고리즘은 바탕이 되어야 하지만, 기본적으로 코포 문제들로 연습을 해야 한다고 한다. 하지만 나는 코포가 열리는 날에만 라운드에 참여하고, 나머지는 크게 신경 쓰지 않았다. 그러다 보니 당연히 실력이 늘 리가 없지... 문제 운이 좋은 날에는 점수가 오르고, 아니면 점수가 떨어지고, 이 과정이 반복되고 있었던 것이다. 

 

2. 업솔빙을 제대로 하지 않았다. 

 

1번과 연관되는 내용으로, 라운드가 끝나고 못 푼 문제들이나 푼 문제들을 다시 한번 살펴보는 과정을 제대로 하지 않았다. 그냥 단순히 풀다가 안 풀린 문제는 해설 보고 이렇구나~ 하고 감탄만 하고 넘어갔다. 이러다 보니 당연히 새로 쌓이는 지식이 없을뿐더러 알게 되더라도 이를 다음에 써먹지 못한 것이다. 

 

3. 너무 급했다. 

 

CP 특성상 문제를 푸는 시간이 중요하다. 특히나 코포는 문제를 빠르게 풀면 늦게 1문제 더 푸는 것과 비슷할 정도로 속도가 중요하기 때문에 이를 신경 쓰느라 너무 급하게 문제를 풀어왔던 것 같다. 쉽게 말하면 당장 블루를 목표로 하는 사람이 퍼플, 오렌지를 목표로 하는 사람처럼 풀었다. 그러다 보니 문제를 충분히 생각하지 않고 바로 코딩을 하는 경우가 많았고, 코딩을 하다가 잘못된 풀이인걸 깨닫고 막혀서 결국 다른 풀이조차 떠올리지 못하게 되는 최악의 결과가 자주 나왔다. 

 

이 문제점들을 해결하기 위해서 다음과 같이 진행할 예정이다. (쉽게 고쳐지진 않겠지만...)


1. 꾸준히 코포 라운드(virtual 포함)에 참여할 예정이다. 당장 목표는 최소 2~3일에 한 라운드는 참여하는 것이다. 그리고 업솔빙에 많은 시간을 투자할 생각이다. 밤에 라운드를 참여하면, 그다음 날 오후까지는 업솔빙을 하는 정도로. 

이렇게 virtual로 거꾸로 참여해서 Round 600 ~ 까지 모두 참여하면 그다음부터는 직접 내 레이팅에 맞는 문제들을 선별해서 풀 예정이다. 

 

2. 필기 노트를 준비했다. 문제를 풀다가 알게 된 개념이나 스킬들이 있을 때마다 노트에 적어두고, 심심할 때마다 훑어보는 방식이다. 특별한 아이디어나 스킬들은 다른 문제를 풀 때 막상 떠오르지 않는 경우가 많은데, 계속 머릿속에 남게 해서 잘 써먹을 수 있으면 하는 바람이다,,,,,

 

3. 문제를 보고 코딩을 하기 전에 항상 여러 쉬운 케이스들을 만들어서 직접 손으로 풀어본 후 코딩을 할 예정이다. 대부분 잘하는 사람들은 한 문제를 풀 때 실제로 코딩을 하는 시간은 절반도 안된다고 한다. 충분히 내 풀이에 대한 검증을 하고 나서 코딩을 하는 것이다. 나 또한 경험상 코딩을 하는 시간 자체는 어려운 문제를 제외하고는 대부분 10분 이내로 끝났기 때문에 (디버깅 제외) 항상 손으로 풀어보는 습관을 가지려고 한다. 

 

사실 모든 CP에서 도움이 되는 사항이기 때문에 단순히 코포만을 위한 노력은 아니다. 단지, 내 실력을 꾸준히 확인하면서, 증진할 수 있는 좋은 매개체이기 때문이고, 그 점수가 뭐라고 그렇게 신경을 쓰냐라고 한다면, 그냥 다른 사람들이 취미로 여러 자격증을 준비하는 것과 동일하게 생각하면 편할 것 같다. 물론 그것보다는 더 내 미래에 도움이 될 확률이 높지만 당장은 개인적인 성취감이 더 크다. 

 

9월엔 진짜 블루를 찍어보자....


SUAPC(신촌지역 대학생 프로그래밍 대회 동아리 연합 여름 대회)에 참여했다. https://wogud6792.tistory.com/56

 

 

Google Kickstart Round E에 참여했다. round D보다는 훨씬 어려웠던 것 같다. 1번 문제를 제외하고는 만점을 받을 자신이 없어서 2번과 3번은 부분점수만 긁었다. 그래도 처음으로 1000등 안에 들었다. 다들 어찌 그리 문제를 잘 푸는지

HackerCup 1 Round에도 참여를 했다. Qualification Round는 무난히 넘겼고, 1Round에 참여했는데 문제 수준이 갑자기 확 올라갔다..... 결국 1 문제만 풀고 GG. 25점 이상 받으면 통과인데 10점만 받았다....ㅎ

 

SCPC 예선 1 Round도 참여를 했다. 생각보다 문제가 어려워서 거의 반 포기상태로 1번만 만점을 받고 나머지 한 문제 긁고 버렸다. 근데 2 Round로 올라갔다... 추측상 1 솔 + a 면 통과인 듯했다. 이대로라면 2라운드를 가서 발릴 것이 뻔하지만 그래도 기분이 나쁠 건 없다. 

 

 

신촌 ICPC 연합 여름캠프 중간 모의고사에 참여해서 1등을 했다. 

근데 딱히 별 의미 없는 1등이다.... 문제도 기존에 만들어진 문제이고 범위도 좁은 데다, 참가자도 몇 없어서 그냥 중간점검의 느낌이다. 기말고사가 진짜 대회 같은 기분이었는데, 기말고사는 망쳐버렸다. 

 

A랑 D 2개나 퍼솔을 하고 2 솔브로 끝났다....ㅎ

패인은 B번 문제를 잘못 읽었다. 사실 잘못 읽었다기 보단 문제 설명이 조금 모호했다는 생각이 든다... 

M초과로 체력을 회복할 수 없다고 해서 아이템을 먹었을 때 체력이 M초과가 되는 경우는 아이템을 먹을 수 없다고 생각했는데, 알고 보니 먹을 수 없는 것이 아니라, 체력이 M이 된다는 의미였다.... 이거 때문에 거의 1시간 반을 삽질해서 다른 문제는 제대로 풀지도 못했다. 이 쉬운 문제를 못 푼 게 많이 아쉽다. 

 


'이번 달은 열심히 하자' 매번 비슷한 목표를 세우고 제자리에 머물러 있는 것 같아 이런 다짐이 무슨 의미가 있나 싶을 때도 있다. 그래서 9월은 정말 마지노선이라고 생각한다. 이번에도 성과가 없다면 정말 PS에 재능이 없다고 생각한다... 항상 다른 일에서는 노력하는 만큼 성과를 거둬왔으니 마지막으로 기대를 해본다.

반응형

'기타 > 공부 일지' 카테고리의 다른 글

2020년 10월 공부일지  (0) 2020.11.01
2020년 9월 공부일지  (2) 2020.10.02
2020.07.15 ~ 2020.07.31 공부 일지  (0) 2020.08.04
2020.06.15 ~ 2020.07.14 공부 일지  (0) 2020.07.15
2020.05.15 ~ 2020.06.14 공부 일지  (2) 2020.06.15