Minter
이민지Cloud Engineer
GitHubadf5858@naver.com포트폴리오 PDF

© 2026 Minter · MINJI LEE

Minter
🏠전체 보기최근 기록 · 연결 지도 · 활동📝학습 기록작업과 공부 과정을 정리한 글📖IT 용어 사전용어와 개념 정리Git 명령어명령어, 옵션, 예시🛠️트러블슈팅문제 상황, 원인, 해결💼커리어 노트취업 준비와 커리어 기록
🧠학습법망각곡선 기반 복습 방식
👋About이민지 · Cloud Engineer📄포트폴리오 PDFv2026.10

Blog

🏠전체 보기최근 기록 · 연결 지도 · 활동📝학습 기록작업과 공부 과정을 정리한 글📖IT 용어 사전용어와 개념 정리Git 명령어명령어, 옵션, 예시🛠️트러블슈팅문제 상황, 원인, 해결💼커리어 노트취업 준비와 커리어 기록🧠학습법망각곡선 기반 복습 방식

Portfolio

👋About이민지 · Cloud Engineer📄포트폴리오 PDFv2026.10
학습 기록코딩테스트

Java 코딩테스트 | input.txt를 활용한 로컬 테스트

SWEA에서는 문제에 따라 대량의 테스트 데이터를 input.txt 파일로 제공한다. 이를 매번 터미널에 직접 입력하는 것은 비효율적이므로, 입력 리다이렉션(Input Redirection) 을 활용하여 파일 데이터를 프로그램의 표준 입력으로 전달할 수 있다.

2026년 11월 3일


Java 코딩테스트 | input.txt를 활용한 로컬 테스트

1. 개요

코딩테스트에서는 여러 테스트케이스를 입력받아 프로그램의 실행 결과를 검증해야 한다.

특히 SWEA에서는 문제에 따라 대량의 테스트 데이터를 input.txt 파일로 제공한다. 이를 매번 터미널에 직접 입력하는 것은 비효율적이므로, 입력 리다이렉션(Input Redirection) 을 활용하여 파일 데이터를 프로그램의 표준 입력으로 전달할 수 있다.

 

핵심 명령어는 다음과 같다.

javac Solution.java && java Solution < input.txt

이 방식은 Java 소스코드를 수정하지 않고도 파일 기반 테스트를 수행할 수 있다는 장점이 있다.


2. 프로젝트 디렉터리 구성

VS Code에서 Java 소스 파일과 입력 파일을 동일한 디렉터리에 배치한다.

coding-test/
├── Solution.java     # Java 소스코드
├── Solution.class    # 컴파일 결과물
└── input.txt         # 테스트 입력 데이터
  • Solution.java: 알고리즘 풀이 코드
  • Solution.class: javac 명령어로 생성되는 바이트코드
  • input.txt: 프로그램에 전달할 테스트 데이터

Solution.class는 컴파일 시 자동으로 생성되므로 직접 작성할 필요가 없다.

SWEA 1206번 예시

SWEA 1206번 View 문제는 테스트케이스가 10개로 고정되어 있다.

각 테스트케이스는 건물 개수와 건물 높이 목록으로 구성된다.

10
0 0 254 185 76 227 84 175 0 0
...

위 내용은 첫 번째 테스트케이스만 나타낸 예시다. 실제 제출 형식에 맞춰 테스트하려면 나머지 9개 테스트케이스도 필요하다.

주의할 점은 맨 위의 10이 테스트케이스 개수가 아니라 첫 번째 테스트케이스의 건물 개수라는 것이다.


3. Java 컴파일 및 실행

3.1. 컴파일

javac Solution.java

Java 소스 파일을 컴파일하여 Solution.class 파일을 생성한다.

3.2. 프로그램 실행

java Solution

컴파일된 Java 프로그램을 실행한다.

이때 프로그램이 System.in을 사용하면 기본적으로 터미널에서 입력을 기다린다.

3.3. input.txt를 활용한 실행

java Solution < input.txt

<는 입력 리다이렉션 연산자다.

일반적으로 터미널에서 전달받는 표준 입력을 파일에서 읽도록 변경한다.(input.txt 를 Solution에 적용한다고 쉽게 생각하자)

 

[일반 실행]

키보드 입력
    ↓
System.in
    ↓
BufferedReader
    ↓
Java 프로그램

[입력 리다이렉션]

input.txt
    ↓
표준 입력 (System.in)
    ↓
BufferedReader
    ↓
Java 프로그램

즉, Java 프로그램은 입력 데이터가 키보드에서 왔는지 파일에서 왔는지 구분할 필요가 없다.

3.4. 컴파일과 실행을 한 번에 처리

javac Solution.java && java Solution < input.txt

&& 연산자는 앞의 명령어가 정상적으로 종료된 경우에만 다음 명령어를 실행한다.

따라서 컴파일에 실패하면 Java 프로그램을 실행하지 않는다.


4. 실행 결과 저장 및 비교

4.1. 출력 결과를 파일로 저장

java Solution < input.txt > output.txt

>는 출력 리다이렉션 연산자다.

프로그램의 표준 출력을 터미널 대신 파일에 기록한다.

따라서 위의 과정은 아래와 같다.(리다이렉션 괄호 방향을 잘 적용하자)

  1. input.txt를 Soltion에 적용 ( < 연산자)
  2. 해당 실행 결과를 output.txt에 저장( > 연산자 적용)

 

 

input.txt
    ↓
Java 프로그램
    ↓
output.txt

output.txt가 존재하지 않으면 새로 생성하고, 이미 존재하면 기존 내용을 덮어쓴다.

4.2. 터미널 출력과 파일 저장을 동시에 수행

java Solution < input.txt | tee output.txt

tee 명령어는 표준 입력으로 전달받은 내용을 터미널에 출력하면서 파일에도 저장한다.

따라서 실행 결과를 실시간으로 확인하면서 기록할 수 있다.

 

(참고 - | 파이프 )

4.3. 예상 정답과 비교

예상 정답이 저장된 answer.txt가 있다면 다음 명령어로 비교할 수 있다.

diff -u answer.txt output.txt
  • 출력이 없으면 두 파일의 내용이 동일하다.
  • 차이가 존재하면 서로 다른 부분을 표시한다.

단, 공백이나 줄바꿈 차이도 비교 결과에 영향을 줄 수 있다.


5. Java 코드 작성 시 주의사항

입력 리다이렉션을 사용하더라도 Java 코드는 기존 표준 입력 방식을 유지한다.

import java.io.*;
import java.util.*;

class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(
            new InputStreamReader(System.in)
        );

        int n = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[n];

        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        System.out.println(Arrays.toString(arr));
    }
}

위 코드는 input.txt를 직접 여는 것이 아니라 System.in에서 데이터를 읽는다.

따라서 로컬 환경에서는 입력 리다이렉션으로 테스트하고, SWEA에는 동일한 Java 코드를 제출하면 된다.

주의: Arrays.toString()과 같은 디버깅 출력은 실제 정답 제출 전에 제거해야 한다.


6. 명령어 요약

목적명령어
컴파일javac Solution.java
직접 입력 실행java Solution
파일 입력 실행java Solution < input.txt
컴파일 + 파일 입력javac Solution.java && java Solution < input.txt
출력 파일 저장java Solution < input.txt > output.txt
터미널 출력 + 파일 저장`java Solution < input.txt
정답 비교diff -u answer.txt output.txt

7. 핵심 암기

  • < : 파일의 내용을 표준 입력으로 전달
  • > : 표준 출력을 파일에 저장하거나 덮어쓰기
  • >> : 표준 출력을 기존 파일 끝에 추가
  • && : 앞 명령어가 성공하면 다음 명령어 실행
  • | : 앞 명령어의 표준 출력을, 다음 명령어의 표준 입력으로 전달

 

코딩테스트 로컬 테스트 기본 명령어

javac Solution.java && java Solution < input.txt

입력 리다이렉션은 Java 고유 기능이 아니라 셸(Shell)에서 제공하는 기능이다. 따라서 Python, C, C++ 등 표준 입력을 사용하는 다른 언어에서도 동일한 원리로 활용할 수 있다.

← 학습 기록GitHub에서 보기