- 의도를 파악하라
- 어떤 자료구조(어레이, 스택, 큐, 딕셔너리, 해시테이블, 힙)를 쓸지 고민해보기
- 문제 풀이 방식 정리하기(단순 브루트 포스? DP? DFS, BFS, 슬라이딩 윈도우?)
- 작성하기
[자료구조]
- 가장 기본인 list나 max,min 등의 변수로만 해결이 가능한가?
- Stack, Queue를 사용해야 하는가?
- 배열에서 순차적으로 접근하면서 뭔가 문제를 풀어야 할 때
Stack을 꼭 고민해보자
- 자료를 저장하고 중복 여부를 확인하려면
Dictionary나 Set을 쓸 수 있지 않을까? (베스트)
- 최소,최대 Heap을 사용해야 할까?
[문제 풀이 방식]
- 완전 탐색을 해야하는가?
- BFS와 DFS 중 어떤 걸 쓸 것인가?
- 최소 STEP을 구해야하는 상황에서는 BFS를 사용하는게 비용에 훨씬 효율적이다
- 그게 아니라면 DFS 써도 좋을듯
- Memoization이 가능한가? 순회하면서 중복이 발생하고 있지 않은가? → DP
- 최적의 해만 찾아서 순차적으로 갈 수 있을까? → 그리디
[주요 모듈들]
- 파이썬 defaultdict, bisect ,Counter 등 다양한 모듈들이 있다.