checklist_debug
일단 -fsanitize=address옵션 추가하고 빌드&실행해서 메모리 오류부터 잡는다.(제일중요)
(WA,RTE)그리디에서 tie인 경우, 정말 순서를 무시해도 되는가? https://atcoder.jp/contests/abc304/tasks/abc304_h
(WA)의심스러운 가정 재검토, 이후 당연하다고 믿었던것게 잘못된가정인지 재검토, 문제오독인가? 핵심조건을 놓쳤나?
(TLE, dp) 초기값(sentinel value)이 계산에 등장하지 않는가? 등장한다면 다른값이나 optional을 사용하라.
(TLE, tree) star/bamboo/포화이진트리 에서 복잡도 보장이 되는가?
(TLE, dijk) minPQ가 아니라 혹시 maxPQ를 사용중인가?
(MLE, bfs) 방문체크했는지?
(MLE, deque) deque기본크기가 80인걸 생각해서 메모리제한 계산해보기. 다른 자료구조 사용.
(MLE, DataStructure) 좌표압축, 오프라인쿼리
루프내에서 참조하는 값을 변경하고 있는가? 2023현대모비스예선4번 나이브구현
vector.push_back()은 반복자무효화 생겨서, 포인터/참조/반복자 전부 쓰레기됨. 이런경우 필요한만큼 reserve해두거나 list쓰자.
오버플로 확인, 로컬에서 -ftrapv옵션 추가해서 테스트
배열크기 여유롭게 잡기, off by one 체크
전역변수(특히 dp,memo배열 등)초기화 누락
음수에 나누기 나머지 연산할 때는 ceil, floor 개념이 뒤바뀐다. (ex: 11661) 왠만하면 cdiv(), fdiv()를 사용하자.
set에서 custom comparator쓰기보단 multiset에서 쓰자
볼록인데 unimodal하지 않거나, 거의 볼록인데 볼록은 아닌경우 삼분탐색 탈출조건 (e-s>2)에서 2를 적당히 큰수 K로 바꿔주고 s부터 e까지 for 돌려서 답 구해주면 가끔 뚫림
ETC
https://www.udebug.com/problem-category
GDB cheat sheet
gdb ./bin/a.out
run < input
b
n: step over (next line)
s: step into
fin: step out
c: coninue
p
l: show next 10 line
bt: show callstack (backtrace)
q: quit
u/d: call stack up/down
파이썬도 python3 –m pdb나 ipdb 실행하면 gdb와 거의 똑같다.
More Info) https://sourceware.org/gdb/current/onlinedocs/gdb/Sample-Session.html#Sample-Session