일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- pandas
- 프로그래머스
- livedata
- activity
- Codeforces
- GitHub
- Python
- 코루틴
- Compose
- Hilt
- AWS
- MyVoca
- 쿠링
- textfield
- relay
- 백준
- androidStudio
- Rxjava
- TEST
- MiTweet
- Coroutine
- ProGuard
- Gradle
- Coroutines
- architecture
- 암호학
- 코드포스
- Kotlin
- boj
- android
- Today
- Total
이동식 저장소
테스트 입력 파일을 쉽게 사용하는 방법 본문
BOJ에서 푸는 문제 중에는 알고리즘 대회에서 출제되었던 문제가 있습니다.
대부분의 대회에서는 대회 당시에 사용했던 입력 데이터를 제공하고 있습니다. 이미 데이터를 활용하고 계신 분들도 많으리라 생각합니다.
그런데 가끔 제공되는 데이터를 활용하기 불편한 경우가 있습니다. 예를 들어 1개의 파일에 매우 많은 테스트 케이스가 있는 경우, 출력이 너무 길어서 출력을 검증할 수가 없습니다. 출력이 올바른지, 올바르지 않다면 어디서 틀렸는지를 수작업으로 찾기가 매우 힘들기 때문입니다.
예전에 저 역시 이런 문제 때문에 데이터를 충분히 활용하지 못했습니다. 그러다가 얼마 전에는 아주 좋은 조합을 발견했습니다. 바로 Visual Studio Code + Windows Subsystem for Linux입니다.
지금부터 데이터를 쉽게 활용할 수 있는 환경을 만들어 보도록 하겠습니다.
0. 요구사항
Windows 사용자의 경우
Visual Studio Code(이하 VSCode)를 사용하고 계셔야 합니다. Visual Studio Community나 Pycharm 등의 IDE를 사용하시는 경우에는 아래의 팁을 활용할 수 없습니다. 아니면 VSCode로 넘어오세요
Linux 사용자의 경우
2번으로 건너뛰세요.
이 글에서는 VSCode를 설치하는 방법은 다루지 않습니다. 배보다 배꼽이 더 커지기 때문에.. 구글에 좋은 글이 많이 있으니 참고하시기 바랍니다.
1. 데이터 구하기
감사하게도, 아래의 블로그에 데이터가 제공되는 거의 모든 대회 목록이 정리되어 있습니다. 먼저 해당 대회에 대한 글을 왼쪽 목록에서 찾은 다음, 연도에 맞는 사이트에 접속하면 됩니다.
한국정보올림피아드 문제는 데이터를 제공하지 않지만, 대신 정올 사이트에서 문제 채점을 지원합니다. 데이터를 얻었으니 이제 리눅스를 설치하러 갑시다.
2. WSL (Windows Subsystem for Linux) 설치하기
리눅스는 일반 가정용으로는 잘 쓰지도 않고, 그러다 보니 접할 기회도 적고.. 웬 도스창 하나만 딸랑 보고 있으면 나름 전공생인데 뭔가 컴맹이 된 느낌이었습니다. 그러나 Windows 10에서는 리눅스 환경을 커널 레벨에서 지원합니다! 이제 귀찮게 가상머신을 쓰지 않아도 됩니다.
설치하기 전에, 우선 제어판에서 WSL 기능을 활성화해야 합니다. 제어판→프로그램 및 기능에서 왼쪽의 Windows 기능 켜기/끄기를 클릭합시다.
Linux용 Windows 하위 시스템을 체크하고 확인을 눌러줍니다. 재부팅이 필요할 수도 있으니 주의하세요.
이제 Microsoft Store에 접속합시다. 어디 있는지 모르겠다면 시작 버튼을 누르고 Microsoft Store를 검색하면 됩니다.
스토어에 접속했으면 오른쪽 상단의 검색 버튼을 눌러 Ubuntu를 검색합니다. 검색 결과 중에 Ubuntu를 클릭하여 설치합니다.
설치가 완료되면 시작 메뉴의 "최근에 추가된 앱"에 Ubuntu가 추가되었을 겁니다. 아이콘을 눌러 Ubuntu를 실행합시다.
도스 창이 뜨면서 뭔가 작업을 수행할 겁니다. 한 5분 정도 걸리는데, 작업이 완료되면 Ubuntu를 종료한 후 재시작합시다. 제가 이미 Ubuntu를 사용중이기 때문에 설치 화면이 없는 점을 양해 부탁드립니다. 재시작한 후 계정 비밀번호를 설정합니다. 비밀번호는 Windows 로그온 비밀번호와 달라도 됩니다.
이제 VSCode를 켜 봅시다. 지금까지 잘 따라왔다면 왼쪽 밑에 초록색 버튼이 추가되었을 겁니다. 버튼을 누르고, 대화상자에서 WSL: New Window 버튼을 눌러 리눅스에 연결합시다. 새로 나타나는 VSCode 화면에서 리눅스를 사용할 수 있습니다.
bash 터미널이 보입니다. 여기까지 왔다면 거의 다 한 겁니다.
이제 자신만의 작업 폴더를 하나 만들도록 합시다. 컴파일을 위해 tasks.json 파일을 가져오고(사실 .vscode 폴더를 통채로 가져오는 게 좋습니다), gcc 등의 컴파일러를 설치하도록 합시다. 참고로 gcc와 g++ 설치 커맨드는 다음과 같습니다.
sudo apt-get install gcc
sudo apt-get install g++
작업 환경을 구축했다면 코드를 컴파일합시다. 이제 데이터를 넣는 작업만이 남았습니다.
3. 데이터 입력하기
우선 데이터 파일을 리눅스로 옮깁시다. 그냥 파일을 끌어 놓기만 하면 됩니다.
이제 프로그램의 입력으로 파일을 주면 됩니다.
리눅스에는 프로그램의 입출력에 대한 커맨드가 존재합니다. 프로그램의 입력을 파일로 줄 수 있고, 출력을 파일에 저장할 수도 있습니다.
파일을 입력으로 주는 커맨드는 다음과 같습니다.
./program < filename
물론 program에는 프로그램 이름이, filename에는 파일 이름이 들어가야 합니다.
프로그램의 출력을 파일에 저장하는 커맨드는 다음과 같습니다.
./program > filename
새로 만들어진 파일에 출력이 저장된 걸 확인할 수 있을 겁니다.
우리는 파일을 입력으로 주고, 파일에 결과를 출력해야 합니다(출력 비교를 간편하게 하기 위함입니다). 그러면 두 커맨드를 동시에 사용하면 되겠네요. 커맨드의 예시는 다음과 같습니다.
./program < in.1 > out.1
in.1 파일을 입력으로 프로그램이 동작하며, 출력은 out.1에 저장됩니다. 파일의 이름에 따라 커맨드를 적절히 입력하면 됩니다.
이제 출력을 비교합시다. 리눅스에서는 두 파일을 비교하는 커맨드를 제공합니다.
diff out.1 answer.1
두 파일이 같다면 아무것도 출력되지 않을 것이며, 다르다면 어디가 다른지 결과가 출력됩니다.
이제는 맞았습니다!!를 받는 것만 남았습니다. 화이팅!
여담
VSCode + WSL 조합을 사용하면 익숙한 Windows 환경에서 코딩 후, Linux에서 컴파일할 수 있습니다. Visual Studio의 C언어 컴파일러가 표준과는 매우 동떨어져 있기 때문에, 개인적으로는 위의 조합으로 gcc를 사용하는 것이 더 낫다고 생각합니다.
이상으로 글을 마칩니다.
질문은 댓글로 해 주시면 최대한 답변해 드리겠습니다.
'Problem Solving > BOJ' 카테고리의 다른 글
1194. 달이 차오른다, 가자. (0) | 2020.03.01 |
---|---|
1102. 발전소 (0) | 2020.03.01 |
2692. 양팔저울 (0) | 2020.02.28 |
16946. 벽 부수고 이동하기 4 (0) | 2020.02.18 |
2623. 음악프로그램 (0) | 2020.02.16 |