코딩 테스트는 주로 프로그래머스에서 실행되는데, 프로그래머스는 기본 텍스트 편집기로 Sublime Text를 사용한다.
코딩 테스트를 준비할 때 프로그래머스 플랫폼에서만 문제를 풀면 큰 문제가 없지만, 백준에서도 문제 풀이를 자주 하기 때문에 플랫폼에 상관없이 Sublime Text를 사용하며 단축키나 여러 세팅에 익숙해지고 싶었다.
Sublime Text 설치 후 Java를 컴파일하고 실행하는 환경을 구축하기 위해 여러 글을 참고했지만 잘 되지 않았다. 시행착오 끝에 빌드를 성공했기에 같은 상황에 처한 분들을 위해 세팅을 공유하고자 한다.
Sublime Text에는 JavaC 빌드 시스템이 존재하지만 컴파일만 하기 때문에 따로 실행을 해줘야 하는 번거로움이 있다. 따라서 편리한 문제풀이 환경을 구축하려면 새로운 빌드 시스템을 만들어줘야 한다.
먼저 상단바 메뉴에서 Tools > Build System > New Build System을 선택하면 untitled.sublime-build라는 파일 탭이 새로 생긴다.
해당 파일에 아래와 같이 내용을 입력한 후 파일명을 지정하여 저장한다. 나는 NewJava.sublime-settings라는 파일 이름을 사용했다.
이 파일에는 여러 옵션을 지정할 수 있는데 나는 최대한 단순하게 이용하고 싶어서 다른 설정들은 제외했다.
// NewJava.sublime-settings
{
// Java 파일을 UTF-8 인코딩으로 컴파일하고, 컴파일된 파일을 실행까지 하도록 함
"shell_cmd": "javac -encoding UTF-8 \"$file_name\" && java \"$file_base_name\"",
}
다른 블로그에서는 $file_name 환경변수 앞뒤로 따옴표를 붙히지 않았는데, 따옴표 없이 실행하니 나의 맥북 파일 시스템 내 Sublime Text 애플리케이션의 경로에 띄어쓰기가 있어 실행되지 않았다.
\"$file_name\" 으로 고친 후 정상적으로 실행할 수 있었다.
파일 저장 후에는 Tools > Build System에 내가 만든 새로운 빌드 시스템이 생긴다. 해당 빌드 시스템을 선택한다.

새로운 자바 파일을 만들고 CMD + B를 누르면 실행이 가능하다.

나는 문제 풀이시에 예제를 텍스트 파일에 따로 작성해서 입력으로 사용하는 방식을 선호하는데, 채점 플랫폼에 코드를 제출할 때 System.setIn(new FileInputStream("input.txt"))를 매번 지워줘야 하다 보니까 아예 빌드 시점에 입력을 우회하고 싶어졌다.
다음과 같이 빌드 시스템에 input.txt를 표준 입력으로 전달하는 옵션도 같이 추가해주면 코드를 매번 수정할 필요 없이 input 파일을 자동으로 사용할 수 있다.
문제를 풀 때 터미널에서 바로바로 예제를 입력하는 것을 선호하는 사람들도 있으므로 이 부분은 선택으로 두는 것이 좋을 것 같아서 추가 사항으로 작성한다.
// NewJava.sublime-settings
{
// Java 파일을 UTF-8 인코딩으로 컴파일하고, 컴파일된 파일을 실행하며, input.txt에서 입력을 받도록 설정
"shell_cmd": "javac -encoding UTF-8 \"$file_name\" && java \"$file_base_name\" < input.txt"
}