[DEV] 기록

백준 input 파일을 읽어오는 방법

구데타마 2020. 5. 16. 19:25

백준 문제를 풀 때 입력값을 넣는 방법은 크게 두 가지입니다.

1. 예제 입력 옆 [복사] 버튼을 통해 직접 콘솔에 붙여 넣기

2. 파일로부터 입력값을 불러오기

 

저 같은 경우는 1번 방법을 주로 사용하지만,

메일을 통해 질문 주셨던 분이 2번 방법에 대해 여쭤보셨기 때문에 간단히 방법을 소개드리겠습니다.

 

우선, input.txt 파일을 현재 실행할 소스코드 파일과 동일한 디렉토리에 넣어줍니다.

소스코드와 동일한 디렉토리

 

* 매개변수에서 파일 경로만 맞춰준다면 굳이 동일한 디렉토리일 필요는 없습니다.

 

질문 주셨던 분이 1931번 문제에 대해 질문 주셨기 때문에 저도 1931번 문제로 예시를 들겠습니다.

input.txt 파일로부터 입력값을 불러오는 방법은 간단합니다.

freopen 함수를 써주면 되며 예시는 아래와 같습니다.

 

 

여기서 핵심은 아래 코드입니다.

freopen("input.txt", "r", stdin);

 

콘솔 창을 보시면 알 수 있겠지만 제가 직접 입력값을 붙여넣든 input.txt 파일에서 불러오든

별도로 코드를 수정하지 않아도 된다는 것을 확인할 수 있습니다.

 

또한, 결과물을 콘솔 창이 아닌 텍스트 파일로 확인하고 싶으시다면 아래와 같은 코드를 추가해주시고 output.txt 파일을 열어서 확인하시면 됩니다.

freopen("output.txt", "w", stdout);

 

* freopen 매개변수 중 r은 read의 약자이고, w은 write의 약자입니다.

 

최종적으로, 백준에 코드를 제출할 때는 파일입출력 코드를 제거해야 AC를 받을 수 있습니다.

따라서, #define 문을 활용하여 아래와 같이 local에서 테스트를 하고 4 번째 줄부터 복사하여 제출하는 방법을 사용하는 것을 추천드립니다.

아래 방법은 gooddaytocode님 블로그를 참고하여 작성한 코드입니다.


 

[출처]

https://gooddaytocode.blogspot.com/2016/04/freopen.html?showComment=1589626099500#c8609534896653852919

반응형