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
vspop
list
vsdictionary
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차 목표
코드 업그레이드
공부를 하다보면 또 공부할 것이 생기고, 또 공부하다보면 새로운 깨달음을 얻고 시야가 트이기 마련이니, 업그레이드한 실력으로 풀었던 문제들을 업그레이드 할 계획이다.
백준 문제
모든 공부와 코드 업그레이드가 끝나면 백준 문제를 시작할 계획