2020년은 코로나 바이러스 때문에 모두에게 힘든 한 해였을 것으로 생각합니다. 저도 처음에는 괜찮았는데 만나고 싶은 사람도 계속 못 만나고 먹고 싶은 음식도 제대로 못 먹으니까 정신적으로 지치네요. 하지만 주변에 좋은 사람을 많이 둔 덕분에, 2020년은 놀랍게도 제가 살면서 가장 많이 성장한 1년이 될 수 있었습니다. 예전에는 (2016~2019) 학점에 과하다 싶을 정도로 투자해서 상대적으로 덜 중요한 교양 과목에도 많은 시간을 넣었고, 그 때문에 학점을 챙기는 것과 PS를 제외하면 특별히 하고 있는 일이 없었습니다. 흥미로운 전공도 극히 일부를 제외하면 듣지 못했습니다. 그에 비해, 올해는 수업도 유용하고 재밌는 것을 많이 들었고, 학점도 적당히 챙겨주면서 학교 밖에서도 많은 것을 배우고 이룰 수 있었습니다. 이렇게 매년 성장할 수 있으면 정말 좋을 것 같네요.
이제부터 글은 토픽으로 나누어서 진행됩니다. 사진 대부분은 링크로 대체됩니다.
PS/CP 이야기
1년에 거쳐서 백준 문제를 약 700개 정도 풀었고, solved.ac 경험치는 대략 2배 정도로 증가해서 Ruby III에 도달했습니다.
작년 이야기를 먼저 빠르게 하면, 위에서 언급한 것처럼 저는 2019년에 한 활동이 사실상 학점관리, PS 2개였습니다. 2016~2018까지는 PS를 설렁설렁하다가 대학에 들어오면서 본격적으로 잡기 시작했고, 손을 대지 않고 있던 자료구조들을 공부하기 시작했습니다. 재귀적으로 짜는 세그먼트 트리나 lazy propagation 등 고인물 알고리즘까지는 아닌 내용도 2019년에 모두 처음 배웠습니다. 시간을 많이 투자한 만큼 좋은 결실을 가져갈 수 있기를 원했는데, 절반의 성공을 거두었습니다. ACM-ICPC에서 5등이라는 예상하지 못한 좋은 결과를 멋진 팀원들 덕분에 얻었습니다. 하지만 개인대회 중 가장 큰 대회인 SCPC에서는 본선조차 진출하지 못했습니다. 가까운 친구들은 전부 알겠지만, 이때 받은 충격이 상당히 컸습니다. 어쨌든 SCPC 수상자가 받을 수 있는 여러 혜택을 받아야 PS를 한 의미가 제대로 나온다고 생각을 했고, 동시에 평생 PS를 할 것은 아닌 만큼 PS에만 집중하는 기간이 길어져서 좋을 것은 없다고 생각했습니다. 결론적으로 올해 SCPC에서 상을 따고 아름다운 마무리를 하는 것이 (PS를 취미 정도로만 하는 것으로) 무조건 이뤄야 하는 주요 목표가 되었습니다.
올해 PS/CP 이야기의 첫 시작은 역시 국제정보올림피아드 겨울학교 조교를 하는 것으로 시작합니다. 2019년에 이미 많은 친구가 조교로 참가했고, 재밌어 보여서 저도 참가하고 싶다는 생각을 했습니다. 고등학생이었을 때는 KMO 겨울학교 조교를 하고 싶다는 생각을 했는데, 이제는 KMO보다는 KOI에 더욱 가까운 사람이니 생각이 달라진 것 같습니다. 아무튼, 2주간 삼성 측 시설에서 합숙하면서 학생들을 지도했는데, 매우 좋은 경험이었습니다. 올해 IOI 2등한 친구 등 여러 훌륭한 사람들을 지도하고 같이 이야기하고 괴상한 문제나 테크닉 소개하고 그러니 즐겁더라구요. 그 때 koosaga와 Binary Matrix라는 Ruby II 수학 문제에 대해서 가끔 이야기했는데, 꾸가 그때 이걸 푸는 걸 보고 좋은 자극을 많이 받았습니다. 결과적으로 BOJ에서 수학 문제를 더 풀고 싶다, 어려운 알고리즘 문제 더 풀면서 실력을 쌓고 싶다는 생각을 많이 할 수 있었습니다. (koosaga한테 수학 십덕력을 밀리고 싶지 않다는 생각이 한몫했습니다)
돌아와서 문제를 풀었습니다. 많이 풀었고, 기록은 이 블로그의 PS 일지로 남아있습니다. 운이 좋게도 Petrozavodsk 캠프 문제들이 백준에 본격적으로 올라오기 시작하면서, 풀 수 있는 수학 PS 문제들도 어마어마하게 많아졌습니다. solved.ac 랭작도 덕분에 속도가 많이 붙었습니다. 수학 이외에도 그냥 Diamond V 잡고 유명하거나 좋은 것으로 알려진 거 골라서 밀고, 특정 대회 잡아서 밀고, 특정 알고리즘 태그 (특히 수학) 잡아서 밀고, 아무튼 많이 풀었습니다. 3월의 PS 일지가 Part 7까지, 4월의 PS 일지가 Part 5까지 있네요 ㅋㅋ; 이렇게 보니까 solved.ac가 정말 좋은 프로젝트입니다. shiftpsh는 신이 맞습니다.
생각해보니까 이때 Google Code Jam도 있었네요. 그 티셔츠 입고 글 쓰고 있습니다 ㅋㅋㅋㅋㅋㅋㅋㅋ
그러다가 방학이 되고, 이때 뒤에 "일상 이야기" 부분에서 이야기할 이유 때문에 아무것도 하지 않았습니다. 가끔 사람 만나면서 같이 팀연습 도는 거 정도. UCPC도 사실 별로 할 생각이 없었는데, 고등학교 친구들이 같이 하자길래 즐겜하기로 했습니다. 좋은 결과가 나온 것은 아니지만, 본선에서 Diamond I 레이팅의 정수론 문제인 H를 1시간 컷해서 First Solve를 딴 것은 지금도 기분이 좋습니다. 수학십덕 인증한 느낌 :) 그 이후로 8월에 또 국제정보올림피아드 여름학교 조교를 했습니다. 온라인이라서 그런지 감흥은 훨씬 줄었습니다. 하지만 PS 폼이 떨어진 상태로 조교를 하기는 조금 그러니 이때 연습을 많이 했습니다. 8월도 PS 일지가 Part 6까지 있네요 :P 특히 이 중 하루는 날을 잡고 친구 집에서 밤새우면서 문제를 풀었습니다. 재밌었는데 지금 상황으로는 다시 하기 힘들 것 같네요 :( 그러다가 학기가 시작되고 CTF에 입문하면서 PS를 많이 놓았습니다. SCPC 하겠다고 1~6월까지 PS를 달린 건데 타이밍이 좋지 않았습니다.
그러다가 8월 말, 9월 초에 SCPC 1차, 2차 예선이 있었습니다. 다행히도 이번에는 SCPC 채점 방식에 대한 이해도가 있었고, stress-test를 하는 방법도 알아 작년보다 편하게 대회를 치를 수 있었습니다. 둘 다 편하게 만점으로 통과했습니다. 하지만 여러 이유로 그 이후 약 1달간 문제를 풀지 못했습니다.
10월 초에 ICPC 예선이 있었습니다. 사실 팀조차도 작년 팀으로 유지가 될지 불분명하다가 다들 그러려니 하는 분위기로 팀을 유지하고 대회를 한 번 더 나가게 되었습니다. 셋 다 한동안 PS를 접어서 별로 큰 기대는 하지 않았습니다. 저는 CTF를 시작했고, 친구 한 명은 Software Maestro 11기로 활동하고 있었고, 다른 팀원은 평소에도 PS를 많이 하지는 않으나 능지로 커버하는 신기한 친구였습니다. 서울대 예선은 원래 빡세고, 코로나로 본선 팀 TO가 줄어든다는 말이 있어서 본선에 가기 어려울 것으로 생각을 했는데, 예상보다 훨씬 좋은 결과인 6등을 받고 본선에 갈 수 있었습니다.
SCPC 본선 날짜가 11월 7일로 확정되면서, 10월 말부터 본격적으로 준비해야겠다는 생각이 들었습니다. 셋도 돌고 문제도 대충 손에 잡히는 것을 풀었습니다. 10월/11월 PS 일지에 푼 문제 목록이 있습니다. 대회 직전에는 제 개인 템플릿을 열고 알고리즘 대부분을 외웠습니다.
11월 7일이 되고 대회를 쳤습니다. 제 입맛에 맞는 문제들이 많이 나와서 운좋게 2등상이라는 큰 결과를 얻었습니다.
이 시점에서 이미 CP를 대회 관련 스트레스를 받으면서 할 이유가 없어졌다고 생각했습니다. 부담이 확실히 많이 없어졌습니다.
11월 14일에는 ACM-ICPC 본선이 있었습니다. 부담 없이 대회에 임했고 적당히 9등/동상으로 마무리했습니다. 대회 중에 어마어마하게 많이 말렸는데, 그래도 명예롭게 끝낸 것 같아서 다행입니다. 그 이후로는 CTF/기말고사로 PS를 하지 못했습니다. 방학 때 조금씩 할 듯.
어쨌든 PS/CP에서 원하는 것을 모두, 그것도 제 기대를 넘으면서 얻어서 정말 편안합니다. 이제 다른 분야로 넘어가도 찝찝하지는 않을 것 같습니다.
제 PS 이야기를 하면서 프로젝트 오일러 이야기를 뺄 수는 없습니다. 올해 대략 100문제를 해결하여 현재 총 526문제를 해결했고, 한국 2등입니다.
프로젝트 오일러의 또 다른 랭킹으로는 문제 수가 아니라 일주일에 한 문제씩 나오는 새로운 문제를 누가 가장 빨리 해결하는가로 결정하는 Eulerian 랭킹이 있습니다. 1등에게 50점부터 시작해서, 1점씩 줄여나가서 50등에게 1점을 부여하고, 최근 10문제 중 점수가 가장 높은 5개의 점수를 합쳐서 매긴 점수로 등수를 매깁니다. 717번 2등, 715번 5등 등 정수론 문제를 일찍 해결한 덕분에 세계 top 10을 (정확히는 8등) 찍어볼 수 있었습니다. 모든 문제를 편하게 빠르게 해결할 정도의 실력자는 아니어서 문제 운이 좀 필요했는데, 어려운 정수론과 쉬운 문제가 (속도전) 잔뜩 나와준 덕분에 이렇게 된 것 같습니다.
별개로 올해 8월, 백준에 characteristic polynomial을 $\mathcal{O}(n^3)$에 계산하는 문제를 출제했습니다.
이 문제는 Petrozavodsk 캠프의 대회용 문제로도 사용되었습니다. 당시에 데이터가 전부 랜덤이어서 약했던 것이 아쉽습니다. 풀어보세요 :)
대학 이야기
대학에 입학한 이후로 세운 첫 핵심 목표는 크게 두 가지였습니다.
- 일단 수학 근본을 쌓고, 응용분야를 공부할 수 있을 정도로 실력 갖추기
- 다양한 응용분야 과목을 듣고, 그 중 내 마음에 듣는 것을 찾기. 가능하면 해당 분야 관련 활동을 하기.
1학년에는 교양 과목을 듣느라 ("치우느라") 이런 목표를 이루기가 어려웠으나, 올해는 다행히도 그러지 않았습니다.
그래도 나름 공격적으로 수강신청을 했는데, 주변에 더 매운 과목을 듣는 친구가 많아서 그런지 별로 안 느껴집니다.
2학년 1학기를 마치고 빠르게 작성한 1학기 후기의 내용을 여기에도 옮기고, 이어서 올해 학교 이야기를 하겠습니다.
해석개론 및 연습 1, 2
- 김김계 해석개론을 1년에 걸쳐서 배웠습니다. 수학 근본을 쌓는 과목. 2학기 내용이 확실히 재밌습니다.
- 증명이 테크니컬한 게 많은데 이것도 나름 이해하는 맛이 있었음
- 푸리에 파트에서 제시하고자 하는 결론이 매우 아름다움. 큰 그림이 멋지다고 생각.
- 르벡 적분 내용 다룰 때 char -> simple -> step -> nonnegative -> measurable로 올라가는 맛이 있음
- 푸리에 해석이나 measure theory나 쓰는 분야는 무진장 많으니 나중에 들어야 할 듯
현대대수학 1, 2
- 프렐라이 현대대수학을 1년에 걸쳐서 배웠습니다. 수학 근본을 쌓는 과목. 역시 2학기 내용이 확실히 재밌습니다.
- 갈루아는 천재가 맞습니다 ㅇㅇ... 갈루아 이론 결과가 진짜 장난 아니게 멋집니다.
- 프렐라이 자체는 쉬운 책인데 대신 근본이 조금 부족한 것 같아서, 방학 때 이인석 교수님의 대수학 책을 볼 예정.
- 현대대수학을 배운 김에, 조금 더 나아가서 Napkin 책의 Algebraic Number Theory 부분을 훑을 예정.
수치선형대수, 수치해석개론
- 둘 다 수치적 알고리즘을 다루는 과목인데, 수치해석개론은 조금 아쉬웠습니다.
- 수치선형대수에서는 말 그대로 수치적 선형대수 알고리즘을 다룹니다. 뭘 배우는지는 1학기 후기 링크 참고.
- 수치해석개론은 뭔가 이미 알고 있는 내용을 다시 보는 느낌이어서 아쉽습니다. 과제는 괜히 또 많고..
- 수치적 알고리즘을 다루는 교과서들이 뭔가 수학적 근본은 조금 부족한 것 같습니다. 잘 모르겠네요 ㅋㅋ
양자 컴퓨팅 및 정보의 기초
- 1학기에 수강한 과목. 양자 컴퓨팅의 기본 원리와 알고리즘에 대하여 배웁니다.
- 아래에 언급할 암호론 과목과 잘 연계됩니다. Shor, Grover 알고리즘을 배우기 때문.
- 즉, "양자컴퓨팅 시대에 왜 RSA를 쓰지 못하는가" 등의 질문에 대한 직접적인 대답을 배울 수 있습니다. ^__^
- 추가적으로 QKD 등 양자 컴퓨팅 기술을 이용한 암호학에 대해서도 간단하게 다루었습니다.
암호론
- 상대적으로 쓸모가 없는 PS 정수론만 하니, 정수론을 쓸모가 있게 쓰는 법이 궁금해서 수강한 과목입니다.
- 1학기 정산 글에서도 이야기했지만, 암호학 전반을 다룹니다. 매우 재밌었음. 랩은 아마 안 갈 것 같습니다.
- 재밌어 보이는 논문을 몇 개 읽었습니다. 정리 글은 이 블로그에 있습니다. 특히 RSA 관련 논문이 재밌습니다 :)
- 사실 수강신청 당시에는 별생각 없었는데, 스노우볼이 어마어마하게 굴러갔습니다. CTF 항목 참고.
- 몇 달 전만 해도 암호론 쪽으로 진로를 잡아야겠다고 생각을 했는데, 또 잘 모르겠습니다. 어렵네요.
최적화의 수학적 이론 및 계산
- Convex Optimization에 대한 여러 알고리즘을 다룹니다. 매우 어렵고 매우 재밌습니다.
- 모든 강의 자료와 과제 문제를 공개합니다. http://www.math.snu.ac.kr/~ernestryu/courses/optimization.html
- 진짜 재밌습니다. 쓸모도 상당히 많은 것 같습니다. 진짜 어렵고 재밌습니다.
- 그래서 수업을 진행하신 Ernest Ryu 교수님의 랩에 들어가 보기로 했습니다. 잘 되면 좋겠네요 :)
- 랩에서 유의미한 결과를 얻지는 못하더라도, 새로운 것을 많이 배울 수 있었으면 좋겠습니다.
컴퓨터프로그래밍
- Java와 C++의 기초와 이를 활용하여 OOP를 하는 법에 대해서 배웠습니다.
- PS/CP 프로그래밍만 하다가 "제대로 된" 프로그래밍을 하니까 새롭고 재밌습니다 :)
- 기말고사가 원래라면 실기 형식일 텐데, 어쩌다 보니 필기시험이 되었습니다. 코로나 때문일 듯합니다.
- 기말은 망했습니다. 절대 안 물어볼 것 같은 걸 물어보더라구요 :(
- 솔직히 실기 시험이었으면 잘 봤을 것 같기는 한데 또 모르겠습니다. 이런 생각이 의미가 있는 것도 아니고 ㅋㅋㅋ
- 계속해서 느끼는 것이지만, 이런 내용은 실제로 뭘 만들면서 굴러봐야지 제대로 이해될 것 같습니다.
각종 교양
- 논리학 (2학년 1학기), 물리학 2 (여름학기), 언어의 세계 (여름학기), 주권국가와 국제법원 (2학년 2학기)
- 이제 남은 교양 과목은 과학 교양 하나, 과학 실험 2개가 전부. 인문 교양이 모두 끝난 것은 매우 다행이라 생각합니다.
- 논리학은 그냥 꿀을 통째로 퍼먹었다고 볼 수 있고, 언어의 세계는 적당히 흥미로웠습니다.
- 주권국가와 국제법원은 내용은 확실히 재밌습니다. 과제와 시험은 재밌는지 잘 모르겠습니다 ㅋㅋ;
2학년 2학기부터 컴퓨터공학부를 복수전공합니다. 3학년부터 본격적으로 전공을 들을 것 같습니다.
올해 총 47학점을 (21 + 6 + 20) 이수했습니다. 2학년 1학기, 여름학기에는 학점을 깔끔하게 잘 받고 넘겼는데, 2학기는 잘 모르겠네요.
UPD: 학점이 다 나왔습니다. 예전처럼 잘 받은 것은 아니지만 예상보다는 잘 받았네요 ㅋㅋ 컴프 B가 아닌 걸 다행으로 생각해야...
CTF/암호학 이야기
2학년 1학기에 암호론 수업을 듣고 여러모로 재밌다고 생각했습니다. 그러던 어느 날, 암호론 기말고사를 준비하다가 겁나 어려워서 바킹독님 블로그의 방명록에 대충 암호론 왜 이렇게 어렵냐는 글을 비밀글로 올렸습니다. 당시에 제가 서로 알고 있는 사이였던 암호학 관련 활동을 하시는 분이 바킹독님 한 분이었기 때문입니다. 그러다가 답글이 왔는데, 대충 "크립토핵이란 사이트가 꽤 퀄리티가 좋으니 해보면 재밌을 것"이란 내용이었습니다. 그래서 가입했습니다.
대충 6월 20일부터 7월 3일까지 크립토핵만 했습니다. 엄청 재밌더라구요 ㅋㅋ 랭킹 올라가는 맛도 있고..
그 후 못 풀겠는 문제들은 못 풀겠는 상태로 두고, 컨텐츠를 능력 선에서 다 소모했다 싶어서 그대로 두고 있었습니다.
8월 중, CryptoCTF가 열려 크립토핵 사람들과 함께 나가서 재밌게 논 것을 제외하면, 별다른 활동을 하지 않았습니다.
7월을 "일상 이야기" 부분에서 후술할 이유로 날렸고, 8월은 PS를 하면서 보냈습니다. 이대로 끝인 줄 알았는데..
8월 말, 한국의 CTF 팀 중 하나인 Defenit에서 들어오라는 연락이 왔습니다. 크립토핵 스코어보드 보고 찾으셨더라구요.
예전 같으면 일을 더 벌이기 싫어서 거절했을 것 같은데, 당시에는 학교 밖 활동을 많이 하는 게 필요하다고 생각해서 수락했습니다. 아래는 당시 친구와 DM.
지금도 생각해보면 크립토핵을 시작한 스노우볼이 정말 크게 굴러갔습니다. 바킹독님 ㄹㅇ로 감사합니다 ㅋㅋㅋㅋ
들어갔을 때 걱정은, 아무래도 CTF 관련 문제를 푼 경험이 크립토핵 밖에는 아예 없으니 짬이 없다는 것이었습니다.
예를 들어, 크립토핵 같은 경우에는 암호의 수학적 요소만 대강 이해해도 풀 수 있는 부분이 많고, CTF에 나오는 내용이 전부 다 있는 것도 아닙니다.
그러니 프로그래밍적 요소에서 발생하는 취약점이나 크립토핵에서 다루지 않은 내용에는 많이 약하고, 그건 안타깝지만 지금도 마찬가지인 것 같습니다.
대충 설명하자면 "내가 그냥 수학원툴인데 그마저도 근본이 딸려서 대회에서 크립토 문제가 나오면 못 풀 것 같다" 정도.
팀에 들어가면서 buuoj라는 사이트를 알게 되어서 여기 문제를 좀 풀었습니다. 사이트가 좋은지는 잘 모르겠습니다 ㅋㅋ
긴장하면서 첫 대회인 InterKosenCTF를 쳤습니다. zer0pts 쪽 분들이 낸 대회인데, 다행히 크립토 문제들이 다 제 입맛에 맞았습니다.
되게 걱정을 많이 했는데 저도 문제를 잘 풀고 퍼솔도 따고 팀도 잘해서 기분이 꽤 좋았습니다. 사실 이때까지만 해도 CTF를 한다는 실감은 나지 않았습니다.
진짜 실감이 나기 시작한 건 TokyoWesternCTF를 쳤을 때였는데, 당시 팀에서 매우 큰 대회라서 매우 큰 연합팀으로 참가한다고 들었습니다.
이때 특히 pwnable/web 잘 푸는 사람들 보고 많은 걸 느꼈습니다. 팀 구성을 아는 사람들은 누구를 말하는 것인지 알 것 같습니다 :) 대강 개잘하는 사람들 볼 때 자연스럽게 드는 감정 50%에 "나는 어쩌다가 이런 사람들이 있는 팀에 들어간 걸까" 25%에 "내가 여기 있는 게 굉장한 privilege 구나" 25%인듯.
다행히 이 대회의 크립토 문제들도 제 입맛에 맞는 순도 100% 수학 문제들이었습니다. 멋진 크립토 팀원 분들이 계셔서 크립토를 다 풀고 우승했습니다.
SECCONCTF도 비슷한 맥락으로 흘러가고 연합팀으로 우승했습니다. 크립토 문제가 또 순도 100% 수학 문제들이어서 편하게 풀었습니다.
이때는 진짜 기여를 많이 한 것 같아서 (4750점 중 1000점 이상 땀 ^__^) 되게 자부심이 컸고, 지금도 올해 이게 가장 큰 CTF 대회 업적 같습니다.
그 이후에 Google CTF Final이 있었는데 2등으로 좋은 결과를 얻었지만 제가 한 건 딱히 없는 것 같습니다 :P
CV에 넣거나 어디 가서 자랑하러 다니려면 뭔가 기여를 어느 정도 해야 할 것 같아서, 이런 경우는 별로 신경을 쓰지 않고 있습니다.
10월 초에 rbtree님의 연락 및 추천으로 Super Guesser라는 팀에도 들어갔습니다. 대회 엄청나게 자주 참가하는 팀으로 이미 알고 있었습니다.
삼성 소멤 블로그 글로 이미 알있던 분이고 고수인 걸 이미 알고 있었기 때문에 같이 문제를 풀면 재밌을 것 같아서 별로 고민하지 않았습니다 :)
이 팀으로 같이 N1CTF를 했습니다. 여기까지도 크립토 문제가 거의 100% 수학이어서 편하고 재밌게 풀었습니다. 같이 푸니까 더 재밌더라구요 ㅋㅋㅋ
10월 말에는 rbtree님, 바킹독님과 함께 암호학 대회 NSUCRYPTO에 참가했습니다. 다들 중간고사로 정신없어 풀 수 있는 문제만 풀고 제출했습니다.
다 좋았는데, 제가 문제를 하나 잘못 읽어서 상의 등급이 한 칸 내려갔습니다 :( 이건 지금 생각해도 너무 아쉽네요 :(
이 쯤, Defenit을 떠나고 팀을 Super Guesser로 완전히 옮겼습니다. 이때 머리 아파서 정신 나가는 줄 알았습니다
이후 11월 초까지는 SCPC/ICPC 등 PS 대회를 준비하느라 제대로 CTF 활동을 하지 못했습니다.
11월 중순부터 이걸 쓰고 있는 12월 말까지 매주 주말을 CTF에 어느 정도 바치고 있습니다.
11월에는 순서대로 BalsnCTF - DragonCTF - HITCONCTF를 쳤습니다. HITCON은 우승하면 DEFCON 본선 직행인 매우 큰 대회입니다.
이 대회들은 매우 강한 CTF 팀 중 하나인 Perfect Blue와 같이 연합해서 참가했고, 결과론적으로는 셋 다 우승했습니다. DEFCON 29 본선 참가도 확정.
하지만 개인적으로는 찝찝한 점이 남고 있습니다. 셋 다 별로 팀에 기여하지 못했기 때문입니다.
BalsnCTF는 푼 팀이 있는 크립토 문제가 하나였고 이 문제는 "피곤해서 자고 일어났더니 풀려 있었다" 정도의 변명이 가능합니다.
DragonCTF, HITCONCTF는 변명할 여지가 없는 것 같습니다. 둘 다 처음 CTF를 시작했을 때 했던 걱정인 짬 문제/수학원툴 문제 때문인 것 같습니다.
DragonCTF에서 원하는 만큼 기여하지 못한 3문제는 각각 비트코인 PoW에 관한 지식이 필요했던 문제/implementation에서 발생하는 취약점 찾으면 쉬운 문제/엄청 어려운 문제가 아닌데 주어진 프로그램을 이해하지 못하여 제대로 건드리지도 못한 문제였는데, 크립토만 하는 사람이 이러면 안 된다는 생각.
HITCON에서는 크립토가 3문제가 있었고, 다행히도 그 중 가장 솔브수가 적은 문제인 primary ingredient를 해결했습니다.
사실 이것도 그냥 때려맞춘거라 실력에 문제가 있는 건 맞지만, 그래도 기여한 건 맞으니까 다행이라고 생각합니다.
잘 찍은 덕분에 다른 고수 팀원들 시간을 많이 절약해준 건 사실이니까요. 하지만 다른 두 문제에서도 별로 기여하지 못한 건 찝찝합니다.
프로그램을 보고 작동 과정을 제대로 이해하거나, 원하는 exploit을 문제없이 구현하는 부분에서 막히는 것은 저도 좀 답답합니다.
예전에 크립토에 수학문제만 나온 대회에서도 "Python에서 for문 어떻게 쓰더라" 같은 소리를 해서 좀 부끄러웠는데 암튼 좀 그렇습니다 ㅋㅋ..
단순히 능지가 박살났거나 암호학 지식이 부족하거나 뇌가 잘 돌아가지 않아 문제를 못 푸는 경우면 부끄럽다기보다는 더 공부해야겠다, 더 자료를 찾아야겠다는 생각이 드는데 저런 문제로 팀원들을 도와주지도 못하면 그냥 창피합니다 솔직히 ㅋㅋ.. 해결을 해야하는 문제입니다. 컴맹인 것 좀 어떻게 해야 :(
사실 제가 CTF 대회에 참가했는데 writeup이 안 올라오면 그건 제가 원하는 만큼 기여를 못해서일 확률이 99%입니다 :(
어쨌든 이때 멘탈이나 자신감이 좀 날아갔습니다. 원래 4인 팀으로 큰 대회를 하나 나가기로 했는데, 말 그대로 쫄아서 튀었습니다.
지금 생각해보면 참 좋은 판단을 한 것 같습니다. 올해 나쁜 판단은 수치해석개론 수강신청 제외하고 없는 듯...
12월 첫 주에는 PBCTF에 참가했습니다. 오랜만에 수학/알고리즘 문제 많이 나와서 재밌게 풀었습니다.
12월 둘째 주에는 ASIS CTF Finals에 참가했는데, 암호학 문제에 여러 오류가 많아서 신경 안 쓰고 있습니다 ㅋㅋ
12월 셋째 주에는 hxp CTF에 참가했습니다. 해시 관련 문제에 아직도 많이 약한 것 같은데, 공부 좀 해야겠습니다.
크립토 한 문제를 풀지 못하고 끝났습니다. Hyperelliptic Curve 문제였는데 이런 거 풀려면 공부가 훨씬 더 필요할 듯. 쉬운 거 하나 풀고 끝났네요.
여행의 첫 시작을 끊어준 크립토핵은 문제가 나올 때마다 빠르게 밀려고 노력하고 있습니다. 현재는 올솔브/8등.
돌아보면 정말 감사할 사람들이 많습니다. 얻은 결과가 제 능력 1%에 주변 도움 99% 정도로 나온 것 같습니다.
크립토핵을 만들어준 운영진분들과 크립토핵 문제를 낸 사람들. 크립토핵 디코에서 도움을 주신 분들.
암호학에 관심을 갖게 간접적으로 도와주신 (소멤 블로그) rbtree님, 크립토핵을 추천해주신 바킹독님.
Defenit에 초대해주신 팀장님 및 같이 팀한 분들 (특히 위에서 말한 pwnable/web 분들과 같이 크립토 푼 사람들)
연합팀에서 계속 멋진 모습을 자주 보여주신 zer0pts, KAIST GoN 및 기타 팀 소속 모든 팀원 분들.
Super Guesser에 들어가는 걸 허락해준 팀장님과 여기서 같이 팀하고 있는 분들, 연합한 멋진 Perfect Blue 팀원 분들.
어쩌다 보니 트위터에 들어가게 되어 만난 CTF에서 저처럼 Crypto 분야 문제를 주력으로 푸는 분들까지.
원래 이렇게 감사하는 건 뭔가 더 이루고 해야 할 것 같지만, 감사하는 마음을 표현하는 게 나쁜 건 아니니까요 :) 정말 감사합니다.
내년에는 더 재밌는 일이 많았으면 좋겠습니다. 4인 1팀 대회도 나가보고는 싶은데, 데려갈 사람이 있을까 싶네요. 군대도 있고 ㅋㅋㅋ
일상 이야기
사실 여기에 특별히 쓸 이야기는 별로 없습니다 ㅋㅋ
- 7월 한 달을 단간론파 정주행하려고 날렸습니다. 제대로 보려면 따효니 유튜브로 봅시다.
- 지능이 많이 올랐습니다. 트위치를 보다가 끊었습니다. 디씨 눈팅을 많이 하다가 끊었습니다. LCK 많이 보다가 끊었습니다.
- 대신 스포츠 영상을 자주 봅니다. NHL 하이라이트 보는 게 정말 재밌습니다 :)
- 1학기, 2학기 모두 비대면으로 집에서 수업을 들으니까 (사실 게을러서) 생활패턴이 많이 망가졌습니다. 실제로 안 들은 수업도 많고 ㅋㅋ..
- 츄니즘이 정발되었는데, 정말 하고 싶은데 코로나 때문에 오락실에 못 가고 있습니다.
- 만나고 싶은 사람이 정말 많은데, 코로나 때문에 못 만나고 있습니다. 슬슬 정신적으로 힘드네요 :(
- 먹고 싶은 음식이 정말 많은데, 코로나 때문에 못 먹고 있습니다. 판교 현대백화점, 쉑쉑버거가 간절합니다 ㄹㅇ
- 가끔 SNS 등에서 코로나 무시하고 놀러 다니는 사람들이 보이는데, 보면 고통 30배 ㅋㅋ..
- 어쨌든 기운 없이 아무것도 하지 않는 시간이 너무 많은 것 같습니다. 어떻게 고칠지는 모르겠습니다.
미래 이야기
미래에 할 일
- CTF를 위해서나, 재미를 위해서나 암호학을 조금 더 제대로 공부할 필요는 있습니다.
- Optimization 관련 랩에 들어갔으니, 일단 이 일도 최대한 열심히 해보고 싶습니다.
- 1월에 블록체인 관련 스터디에 들어갑니다. 친구랑 같이할 것 같고, 기대하고 있습니다.
- 삼성소프트웨어멤버십에 들어갔습니다. 블로그 작성 등을 할 계획입니다.
- 정수론 가이드를 작성하기 시작했습니다. 방학 안에 마무리해야 합니다.
- 군 문제를 해결해야 합니다. 빠르게 처리하고 싶은데, SW 개발병을 원하면 개발 공부나 자격증 공부도 해야 할 것입니다.
- 군 문제를 제외하고 생각해도, 개발 공부를 언제까지나 내버려 두는 것은 현명하지 않은 것 같습니다. 소개원실 ON?
- 데이터 과학 분야를 언제까지나 공부하지 않을 수는 없으니, 기본기 정도는 갖추어야 합니다.
- 더 먼 미래에 뭘 할 것인지에 대한 고민을 해야 합니다. 대학원을 갈 것 같기는 한데 어떻게 될지 ㅋㅋ;
- 3학년 1학기 희망 수강 과목 : 소개원실, 수학적 모델링, 자료구조, 알고리즘, 복소 1, 수리통계 1 or 미분기하학 1
- 매운 전공들 좀 더 듣고 싶습니다. 주변에 복소, 미기, 위상 등을 듣고 있는 친구가 꽤 있어서 더 자극되네요.
미래에 대한 고민
- 뭔가 한 건 많은데 결국 10~15년 뒤에 의미가 있는 것들인지는 또 미지수입니다.
- 물론 하고 있는 모든 일에 대해 10~15년 뒤의 의미를 따지면 매우 재미없는 삶이겠지만, 의미 없는 일만 한 것은 아닌지 걱정은 되네요 :(
- 자꾸 다른 사람들이 하지 않는 것들만 하려고 하니까 다른 사람들이 다 아는 걸 모르는 것 같습니다 :(
- 위 문제에 대해서, "대충 때가 되면 공부하지" 정도로 생각하고 넘겼는데 솔직히 너무 무리수 같습니다 ㅋㅋㅋ
- 그래도 "공부하면 평타는 치지 않을까"라고 근거 없이 믿고는 있는데 사실 배워봐야 알 것 같습니다 ㅎㅎ..
- 결국 "내가 미래에 개발자가 되면 지금 하는 것들 중 대부분이 쓸모가 없어질 것이고 애초에 개발자를 목표로 공부해온 분들에 비해 뒤쳐질 수 밖에 없음. 공부하면 따라잡을 수 있다고 쳐도 뭔가 너무 아쉬움. 그래서 지금 하고 있는 것들을 바탕으로 할 수 있는 일을 하고 싶은데 그런 일을 하려면 ㄹㅇ 장난 아닌 수준의 능력자가 되어야 함. 근데 그럴 능력자가 될 자신은 없음." 이 고민은 대학원 관련 결정이 나기 전까지 계속될듯. 어쩔 수 없다.
- 성장했다고 글 앞에 썼는데, 진짜 성장을 한 건지 아니면 그냥 스펙이 쌓인 걸 성장이라고 착각하는 것인지 모르겠습니다
- 한 건 많다고 썼는데, 진짜 한 것이 많은 건지 아니면 그냥 스펙이 쌓인 걸 한 것이 많다고 착각하는 것인지 모르겠습니다.
- 하고 싶은 일과 미래에 대한 계획이 매일 바지 갈아입듯 자주 바뀝니다. 별로 좋은 일은 아닌 것 같은데 ㅋㅋ
- 미필인 만큼 군대 고민은 패시브처럼 박혀있습니다. 이건 어쩔 수 없고 ㅇㅇ..
- 그래도 예전에는 자칫하면 그냥 굶어 뒤지는 것 아닌가??? 생각까지 했는데 SCPC 따고 그런 생각은 많이 줄었습니다.
- 자기관리가 제가 생각해도 심각할 수준으로 안 되고 있는 것 같습니다. 식단 운동 체력 이런 거 다 저세상 보냄 ㅋㅋ
- 코로나 진짜 언제 끝남? 1년 안에 이거 안 끝나면 진짜 정신 나갈듯 ㅇㅇ...
'미래 계획 및 근황' 카테고리의 다른 글
2월 정리 (0) | 2021.02.28 |
---|---|
1월 정산 + 2월 계획 + 1학기 수강신청 (1) | 2021.02.01 |
1학기 후기 || 최근에 한/할 것들 || 2학기 계획 (0) | 2020.06.23 |
여름방학 목표 (0) | 2020.06.19 |
겨울방학 목표 정리 (4) | 2019.11.29 |