Haribo ML, AI, MATH, Algorithm

파이썬 모든 문제 푼 후기


Java문제(15) + SQL 문제(9) 제외


Lv.3 까지는 자력으로 다 풀 수 있는 난이도 였지만, Lv.4 부터는 자력으로 푼 문제가 50%도 안된다. 풀었던 50%도 다른 Lv.4 문제에 비하면 급이 떨어지는 문제들이라 처참했다.


아무런 준비도 없이 봤던 [2021 카카오 blind 공채 코딩테스트]와 [2021 카카오 상반기 인턴 코딩테스트]를 처참하게 망친 후 이대론 안되겠다 싶어 2021년 1월부터 프로그래머스 모든 문제를 다 풀어서 내것으로 만들겠다고 다짐한 후 닥치는대로 문제를 풀고, 다른사람의 풀이를 공부하고 다시한번 코드를 암기하며 포스팅을 했다. 하지만 머리가 많이 굳었는지 3번의 복습으로도 충분하지않다는걸 확실히 느끼고있다.

178개의 문제를 풀며 느꼈던 알고리즘 문제풀이에 꼭 필요한(내가 정복해야할) 스킬, 라이브러리, 알고리즘들을 공부하고 포스팅 한 뒤, 다시 모든 178개의 문제를 더 깔끔하고, 효율성 좋게 업그레이드 할 예정이다.


문제 풀면서 느낀점

30분 고민해서 어떻게 풀어야할지 감이 안잡히면 자존심 부리지말고 다른사람 코드를 보는게 가장 좋다. 시간절약 + 새로운 시야(알고리즘, 라이브러리, 접근법)를 가질 수 있다.

나의 문제풀이 순서

  • 어떤 알고리즘을, 접근법 사용해서 문제 풀지 고민(5%)
  • 손으로 공식화, 수도코딩(50%)
  • 코딩 (5%)
  • 테스트(40%)

이런식으로 시간을 쓰는데, 첫 단계 부터 30분이 넘어간다? 그러면 그 문제는 애초에 내 현재 상식으로는 못푸는 문제라는 말이다.

처음엔 내가 스스로 해결하지않고 다른사람의 풀이를 보면 뭔가 실력향상이 안될꺼같고, 손해보는 느낌이고 자존심 상하고 패배자같은 느낌이 들어 한 문제를 1주일 넘게 붙잡고 있었던 적도 있다. 하지만 다른사람의 상식을 내것으로 만드는게 더 중요한 부분임을 어느순간부터 느꼈고, 작업하는데 시간을 쓰는 것은 상관없지만 못 푸는 문제 붙잡고 있는것만큼 미련한것은 없다는것을 느꼈다. 왜냐하면 못 푸는 문제는 몰라서 못 푸는 것이기 때문에 다른사람 코드를 공부하고 복습을 하면된다.


앞으로 목표

내가 꼭 공부해야할 목록

  • functools 라이브러리
    • reduce, cache, …
  • itertools 라이브러리
    • cahin, groupby, product, ….
  • re
  • bisect, heapq, priority 장단점
  • lambda
    • 함수의 인자로 사용되는 lambda
      • defaultdict, reduce 등등
    • 일반 lambda
  • map, filter
  • typing
    • Generator, Sequence, Tuple, TypeVar
  • 효율성
    • indexing vs pop
    • list vs dictionary
  • MST
    • ` Borůvka’s, kruskal, prim, reverse-delete`
  • 최단경로 알고리즘
    • Dijkstra, Bellman-Ford, Floyd-Warshall, A*
  • Tree
    • Trie, Segment, AVL
  • 수학
    • Catalan, Disjoint Set, Linear Algebra, 최적화, 조합론
  • 파이썬 개념
    • Function annotation
    • 파이썬 기본서 독서

3월 안으로 수학빼고 나머지 부분들을 공부하고 포스팅하는것이 1차 목표

코드 업그레이드

공부를 하다보면 또 공부할 것이 생기고, 또 공부하다보면 새로운 깨달음을 얻고 시야가 트이기 마련이니, 업그레이드한 실력으로 풀었던 문제들을 업그레이드 할 계획이다.

백준 문제

모든 공부와 코드 업그레이드가 끝나면 백준 문제를 시작할 계획


이전 포스트 문자열의 아름다움

다음 포스트 functools

Comments

Content