알고리즘 문제를 풀면서 알게된 팁들
01. 시간초과가 발생할 때
- 코드 자체의 시간 복잡도
- 반복문을 너무 많이 사용한 것이 아닌지 체크
- 적절하지 않은 자료구조를 사용한 것이 아닌지 체크
- 예를 들어, pop(0)보다 popleft()가 더 빠르다.
- 빠르게 입력 받기를 시도해본다
# sys 라이브러리
import sys
data = sys.stdin.readline().rstrip()
02. 오류가 발생할 때
- 디버깅 모드로 분석한다.
- 코드를 작성했을 때 나의 의도와 다른 변수의 변화 등을 체크
- 인덱스 오류
- 보통 for문에서 발생한다.
- 입력이 아주 짧은 경우 발생할 수도 있다.
- 메모이제이션으로 리스트의 일정 인덱스의 값을 선언해놓았을 때 발생 가능
- 자료형 오류
- 입력을 받았을 때 map 함수 처리를 안 했을 가능성이 있다.
- 코드에서 자료형이 적절하게 되어있는지 점검
03. 예외 케이스
- 예제 케이스는 통과했지만 채점에서 오답처리가 되는 경우
- 코드 상에서 고려하지 못한 것을 점검
- 경험상, 0이나 1같은 작은 값에서 많이 발생하게 되므로 직접 넣어볼 것
- -1(음수), 문제에서 주어진 최댓값, 최솟값을 고려하기
- 또는, 만든 입력값을 넣어봤을 때 예상하는 답과 다른지 체크
- 다른 경우, 디버깅 모드로 예상하는 값과 왜 다른지 점검
- 파이썬 튜터에서 시각화된 코드의 진행을 보는 것도 좋다.
'programming study > 항해99 커리큘럼' 카테고리의 다른 글
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (17) (2021.3.19) (0) | 2021.03.19 |
---|---|
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (16) (2021.3.18) (0) | 2021.03.18 |
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (14) (2021.3.16) (0) | 2021.03.16 |
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (13) (2021.3.15) (0) | 2021.03.15 |
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (12) (2021.3.14) (0) | 2021.03.14 |