오리 도서관/(미분류) 삽질 방지 개발 지식

[TIP] 코딩 테스트를 연습할 때, 파일로 입력을 받기 ( C/C++ )

Kwon_Ori 2025. 2. 10. 19:00

스켈레톤 코드와 테스트 실행 환경을 쥐어주는 Leet Code 나 프로그래머스와 달리 백준 온라인 저지는 입력부터 출력까지 모든 부분을 작성하고, 제출 전 테스트 또한 본인이 쓰고 있는 IDE 에서 실행해야한다.

 

아마 나를 포함해서 대부분의 유저들은 실행, 입력 복붙, 출력 확인, 아이고 틀렸네를 반복하고 있을텐데 이를 파일을 통해 간단하게 입력을 받아 테스트 하는 방법이 있었다. 파일 입출력은 매번 실행할 때마다 복붙을 해야하는 번거로움을 없애줄 뿐만 아니라 가끔 종료 조건이 eof 인 문제들도 깔끔하게 테스트 할 수 있다는 장점이 있다.

 

방법은 정말 간단하므로, IDE 에 한 번 세팅해서 두고두고 써먹으면 된다.

 

1) (VS 기준) 소스코드와 동일한 위치에 테스트 입력 파일을 추가한다.

 

2) 실행할 메인문의 입력부에 아래 코드를 추가한다. 

ONLINE_JUDGE 는 백준 온라인 저지 채점 서버 쪽에 정의된 매크로인데, ifndef 로 조건부 컴파일을 걸어두면 제출할 때마다 파일 입력 코드 라인을 지울 필요가 없어진다. ( 그 외에 디버그 출력에도 조건부 컴파일을 걸어두면 굉장히 편리하다 )

#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif

 

3) 경우에 따라 freopen_s 를 사용하지 않았다며 컴파일 에러가 나올텐데, 제출과 무관한 코드이므로 freopen_s 를 사용하도록 코드를 수정하거나 전처리기 정의에 _CRT_SECURE_NO_WARNINGS 를 추가하면 된다.