GDB사용법 gdb ./bin/a.out run < input b : break point n: step over (next line) s: step into fin: step out c: coninue p : print evaluated expression l: show next 10 line bt: show callstack (backtrace) q: quit u/d: call stack up/down More Info) https://sourceware.org/gdb/current/onlinedocs/gdb/Sample-Session.html#Sample-Session 파이썬도 python3 –m pdb나 ipdb 실행하면 gdb와 거의 똑같다. 기본: 직접 만든 (코너)케이스로 테스트 & 디버깅 container반복할때 원소삭제하면 안됨 원소가 추가/삭제되는(특히 추가될때 잊기 쉬움) Vector원소의 포인터나 반복자를 저장해놓지 말자. 필요하다면 인덱스만 저장하자. Vector의 push_back()은 재할당이 일어날 수 있고, 그러면 포인터나 반복자가 무효화되서 RTE가 난다. Boj 14554에서 당했었다. 오버플로: 결과값 뿐만 아니라 중간계산값이 오버플로일 수도 있다. accumulate에서 long long 배열에 int형 초기값을 주면 accumulator 타입이 int가 되서 오버플로난다. 경고도 안뜨는거라 주의해야할듯. 배열 Off by one 출력형식 누락 테케문제에서 전역변수(특히 dp,memo배열 등)초기화 누락 연산자 우선순위 꼬임(특히 비트연산) 논리적 오류(ex: 잘못된 가정{직접 주어진게 아닌, 유추한 조건들 모두 검토}, 문제오독, 필요조건 놓침 등) 상수 오타 에러 너무 작은 inf값 언더플로|실수오차 음수에 나누기, 나머지 연산할 때는 ceil, floor 개념이 뒤바뀐다.(ex: 11661) 왠만하면 Frac.ceil(), Frac.floor()을 사용하자. Set comparator 실수(구현팁 항목참조) Set comparator 정의해서 쓸때, 같음의 정의가 오류 없는지 확인해보기.(BOJ1700 멀티탭 스케쥴링, ) Multiset은 같은 것도 저장하니 좀 덜하다. 기하 직선과 선분은 구분하여 사용 (선분을 inf값으로 사용하면 intersect가 문제생길수 있다. CERC 2015 H번) Empty list에 *min_element()하면 UB다(0이나 -inf가 아니다. End가 반환되고 그걸 역참조하면 UB) 야매 비비기 팁: 볼록인데 unimodal하지 않거나, 거의 볼록인데 볼록은 아닌경우 삼분탐색 탈출조건을 (e-s>2)가 아니라 2대산 적당한 큰 수 K로 바꿔준 후, s부터 e까지 for 돌려서 답 구해주면 잘 뚫린다.(정해는 아님) Memoization 초기값이 계산중간에 등장가능한 경우(그래서 bool로는 메모이제이션 불가능) Dfs visited[] 처리 누락(백트래킹이 되서 O(2^n)임) 무한루프(or 무한재귀, 특히 파라메트릭서치(탈출조건확인)나 완전탐색(기저조건확인)) Dijkstra TLE -> minPQ가 아니라 maxPQ일 수 있음 DnC재귀시 구간 s,e 처리하면서 hfor(i,s,m)이 아니라 rep(i,m)을 써서 망한적이 자주 있다. 조심하자. 트리DP에서 성게모양 그래프 조심하자. 특히 f(v,p)형태 DP할때 for(i:g[x])로 인접한거 다합치는 방식을 무의식적으로 하게되는데, TLE난다. 이런경우 루트 고정하고 계산한 다음, dfs로 부모서브트리값 계산하고 다니면서 답계산하는 형태가 정해일 가능성이 높다. 다차원Vector의 경우, 제일 큰 차원을 마지막 차원으로 사용하는게 좋다. Vector의 경우 기본메모리 24바이트를 사용하기 때문에, [4][1000][2] 같은 경우 실제 메모리는 [4][1000][24]정도로 커지게 됨. [4][2][1000]의 경우 그대로 유지됨. deque 기본크기가 무려 80이다. 메모리제한이 빡세서 상수로 터짐(Dynamic Seg, PST등. 각각 좌표압축과 오프라인으로 제거할 수 있는 경우가 종종 있다) Bfs의 visited[]처리 누락 Dfs 인자로 vector넘겨줄때 참조자 빼먹은경우 https://blog.naver.com/onjo0127/220929736505 https://www.udebug.com/