본문 바로가기
일상

백준 100일 스트릭 달성!

by 앗가 2022. 1. 29.
728x90
반응형

ps를 조금씩 하다 보니 어느새 매일 백준을 풀기 시작한 지 100일이 지났다. 

 

100일 전, dfs, bfs는 구현가능까지, 이분탐색, 백트래킹, 다익스트라, 유니온파인드, 플루이드 와샬, 벨만포드 알고리즘은 어떻게 돌아가는지는 잘 몰랐지만 사용할 수 있는 수준, dp, 그리디 개념, 큐, 스택, 덱, 트리까지만 배운 수준이었다. 

 

그마저도 8개월 전에 한게 마지막이라 개념만 들어있는 상태에서, 다시 시작했다.

 

다시 ps를 시작하면서 dp, 그래프탐색, 그리디, 유니온파인드, 백트래킹, 구현을 여러 문제 풀어보며 알고리즘을 제대로 이해하고, 재귀에 대한 두려움을 좀 지워냈다. 40문제정도 풀었을 때 재귀에 대한 감을 어느 정도 익힌 거 같았다. 그 와중에 FFT가 알고리즘에 어떻게 생기는지 너무 궁금해서 FFT를 배우고 단계별에 있는 FFT를 밀었다. 그러다가 큰수곱셈3에서 막혀서 FFT를 더 진행하는 거 포기. 

 

이후 연대 프밍 경진대회에서 5솔로 마무리를 하고, 구현 문제를 위주로 ps를 진행하고 크루스칼 알고리즘, 위상정렬, KMP, LCA알고리즘을 배웠다.

https://www.acmicpc.net/contest/view/700

 

2021 연세대학교 프로그래밍 경진대회 Open Contest

사용 가능한 언어 C++17 Java 8 Python 3 C11 PyPy3 C99 C++98 C++11 C++14 Java 8 (OpenJDK) Java 11 C++20 Kotlin (JVM) Java 15

www.acmicpc.net

이렇게 풀면서 플래 5달성. 이후 SCC, 세그먼트트리알고리즘 배우고 class4 + 5에 있는 문제를 풀면서 플래 4달성. 뒤에는 골드 아무 문제 풀기를 해보았다. 그러면서 코드포스가서 털려보기도 하고, 프로그래머스 코테에 붙어보기도 했다! 뒤에는 다 떨어졌긴 했지만... 

 

그렇게 어찌어찌 21년까지 500문제 풀기도 달성했다. 그 뒤로 컨벡스헐, 이분매칭, 트라이, 최소 외접원 휴리스틱 알고리즘을 배웠다. 

 

사실 여전히 자신있게 구현할 수 있는 알고리즘이 많지는 않다. DFS, BFS, 유니온 파인드, 크루스칼 알고리즘, 위상정렬, 다익스트라정도만 할 수 있고 나머지는 템플릿에서 변형해서 쓰는 정도이다. 한편 깃허브 알고리즘 리포지토리에 뭐를 계속 집어넣어서 덩치가 불어났다. 

https://github.com/atgane/alg_repos

 

GitHub - atgane/alg_repos: 111

111. Contribute to atgane/alg_repos development by creating an account on GitHub.

github.com

이제는 스트릭을 깨고 알고리즘을 쉬려고 한다. 재밌게 했었지만 어느순간 스트릭을 계속 진행해야 하는 구속감에 강제적으로 하는 느낌이 들어서, 이제는 가끔씩만 하려고 한다. 

 

100일 동안 재밌게 했던 백준. 이제는 웹, 인공지능 등 다양한 것을 해보려고 한다. 

728x90

댓글