본문 바로가기

Algorithm & Data Structure

프로그래밍 대회 디버깅

728x90

프로그래밍 대회나 백준에서 푸는 문제를 풀 때 원하는 결과와 다르게 나온 경우, 어떻게 할까?

대다수 디버거를 켠다.

하지만 프로그래밍 대회에서는 디버거 사용을 권장하지 않는다.

 

프로그래밍 대회에서 작성되는 코드는 대부분 길지 않기 때문에 눈 디버깅이 가능할 뿐더러, 재귀 호출이나 반복문이 많이 사용되어 코드가 디버깅에 적합하지 않은 구조다.

 

디버깅 대신 사용할 수 있는 것들을 소개한다.

 

1. 작은 입력에 대해 제대로 실행되나 확인하기

오동작하는 가장 작은 입력을 먼저 찾아내면 디버깅이 훨씬 용이해진다.

2. 단정문(assertion) 사용하기

단정문이란, 주어진 조건이 거짓일 때 오류를 내고 프로그램을 강제 종료싴키는 함수 또는 구문을 의미한다.

주어진 조건이 참일 때는 무시된다. 

함수에서 넘겨받은 인자들이 범위 안에 들어 있는지 등을 단정문으로 검사해볼 수 있다.

3. 프로그램의 계산 중간 결과를 출력한다.

프로그램이 실행되는 중간 과정 값들을 출력하여 자신이 예상하는 바와 맞는지 확인한다.

 

위 과정을 걸치고도 오류 원인을 모르겠거나 프로그램이 런타임 오류를 낸다면, 디버거를 사용해도 좋다.

 

출처 : 구종만 선생님의 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 1권

'Algorithm & Data Structure' 카테고리의 다른 글

알고리즘 문제 해결 방법  (0) 2024.05.12