시간 복잡도와 2차원 리스트

·
알고리즘/이론
문제를 다 읽고 나서 가장 먼저 해야 할 일은 코드를 치는 게 아니다. 제한 조건에 적힌 N의 최댓값을 보는 것이다. N이 1,000이면 이중 반복문을 마음 놓고 써도 되고, N이 100,000이면 이중 반복문은 그 자리에서 탈락이다. 이 판단을 코드 작성 전에 못 하면, 논리가 완벽한 풀이를 다 짜고 나서 시간 초과를 받고 처음부터 다시 시작하게 된다.이 글은 그 판단을 하기 위한 기준선 하나를 만드는 정리다. "1억 번 연산 ≈ 1초" 라는 숫자 하나만 손에 쥐면, 제한 시간과 입력 크기에서 허용 복잡도를 역산할 수 있다. 앞쪽 절반은 그 기준선을 세우는 데 쓰고, 뒤쪽 절반은 그 감각을 2차원 리스트 순회와 델타 탐색이라는 실제 코드로 잇는 데 쓴다. 격자 문제에서 삼중 반복문이 나왔을 때 "이게 ..