알고리즘 공부 포스팅

알고리즘 공부 시작

알고리즘 공부

최근 1년여를 경쟁과 동떨어진 삶을 살다 보니 스스로 정체되는 느낌이 들었고, 4월 말에 충동적으로 10년 가까이 사용하던 리그오브레전드 아이디를 지웠다..

그리고 무엇이든 시작하기 위해 내가 할 수 있는 일들의 목록을 정리했었는데, 크게 나눠보면 다음과 같이 3가지 옵션이 있었다.

  1. 1인 유니티 게임 개발
  2. 알고리즘 공부
  3. AI 공부

이 중 1번은 기획부터 완성 및 출시까지 너무 많은 시간이 걸릴 것 같아서 제외하고, 3번은 작년 tensorflow certificate 이후로 안 본 지 꽤 되어서 패스.

결국 알고리즘 공부를 다시 시작하기로 했다.

Baekjoon Online Judge & solved.ac

학부 시절 사용하던 Baekjoon Online Judge 아이디를 찾아서 로그인하고 어떤 순서로 공부를 하면 좋을지 인터넷을 뒤적이던 와중에 solved.ac 를 발견했다.

image_1

문제의 난이도를 직관적으로 보여주며

라떼는 그냥 뒤에 붙은 정답률만 보고 난이도 짐작해가며 문제 풀었는데.. 세상 너무 좋아졌다.

image_2

게임의 콜렉션이나 업적 시스템처럼 클래스를 취득하는 시스템도 생겼고

image_3

내 카테고리 별 능력치도 볼 수 있다.

image_4

그리고 모든 요소를 취합해서 최종적으로 매겨지는 나의 티어 (골드 5)

롤처럼 브론즈, 실버, 골드, 플래티넘, 다이아몬드가 있고 그 위로는 루비, 마스터가 있는 듯 하다.

계획

우선 한달정도 문제를 풀며 어떻게 공부와 포스팅을 진행해야 할 지 고민해 보았다.

image_5

시작한 직후라 그런지 티어 상승 속도가 매우 빨랐다.

문제의 난이도는 골드 중간까지는 바로 풀리거나 시간을 좀 들여서 해결하는 정도인데, 골드 1~플래티넘으로 올라가는 순간 급격히 어려웠다.

앞으로 시도하는 문제들 중 복잡하거나 어려운 개념이 필요하다면 포스팅하며 정리해보려 한다.

현재는 Segment Tree 가 그에 속하는데, 며칠 전 접한 [6549] 히스토그램에서 가장 큰 직사각형 문제에서 반드시 알아야만 시간초과를 피할 수 있는 자료구조이다.

개념 정리부터 구현, 그리고 응용 및 변형으로 해결할 수 있는 다양한 문제를 분석하는 식으로 포스팅할 것 같다