본문 바로가기
📚 Stack/Java

[JAVA] 코딩테스트에서 효율적인 입력 처리

by 개발한 너굴씨 2024. 4. 12.
728x90

 

 

 

코딩 테스트에서 입력 방식 Scanner vs BufferedReader


 

 

 

 

 

 

 

코딩 테스트를 위한 입력 처리는 정확성뿐만 아니라 실행 속도도 중요합니다. Java에서는 주로 ScannerBufferedReader를 사용하여 입력을 받는데, 각각의 특징과 적합한 사용 시나리오에 대해 알아보겠습니다.

 

 

 

BufferedReader가 선호되는 이유 

 

코딩 테스트에서 시간 제약은 매우 중요한 요소입니다. 큰 입력 데이터를 처리할 때 BufferedReaderScanner보다 훨씬 빠른 성능을 제공합니다. 이는 BufferedReader가 내부적으로 버퍼를 사용해 한 번에 많은 양의 데이터를 읽어들이기 때문입니다. 따라서, 입력 데이터의 양이 클수록 ScannerBufferedReader 간의 성능 차이는 더욱 확대됩니다.

 

 

 

 

 

간단한 입력의 경우 

소규모의 간단한 입력 데이터에 대해서는 ScannerBufferedReader 모두 적합할 수 있습니다. Scanner는 사용이 간편하고 직관적인 코드를 작성할 수 있게 해주기 때문에, 작은 양의 데이터를 다룰 때 편리합니다. 반면, 대규모 데이터를 처리해야 하는 코딩 테스트의 경우, 시간 초과를 방지하기 위해 BufferedReader의 사용이 권장됩니다.

 

 

 

 

Scanner 사용법

Scanner 객체를 생성 후, nextInt(), nextLine() 등의 메소드를 사용하여 입력 값을 직접적으로 변수에 저장할 수 있습니다

 

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        System.out.println("Hello, " + name + "! You are " + age + " years old.");

        scanner.close(); // Scanner를 더 이상 사용하지 않을 경우 반드시 닫아줘야 함
    }
}

 

BufferedReader 사용법

BufferedReader를 사용하기 위해서는 먼저 InputStreamReader 객체와 함께 사용되어야 하며, readLine() 메소드로 데이터를 한 줄씩 읽습니다. 읽은 데이터는 StringTokenizersplit() 메소드를 사용하여 파싱할 수 있습니다. 이 방법은 다소 복잡하지만, 대량의 데이터를 효율적으로 처리할 수 있습니다. 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BufferedReaderExample {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        try {
            System.out.print("Enter your name: ");
            String name = reader.readLine();

            System.out.print("Enter your age: ");
            int age = Integer.parseInt(reader.readLine());

            System.out.println("Hello, " + name + "! You are " + age + " years old.");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close(); // BufferedReader를 더 이상 사용하지 않을 경우 반드시 닫아줘야 함
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

 

 

 

결론적으로

Java 코딩 테스트에서 입력 방식을 선택할 때는 문제의 요구 사항과 데이터의 크기를 고려해야 합니다. 작은 데이터와 간단한 입력 처리는 Scanner가 적합할 수 있지만, 시간 제한 때문에 코딩 테스트에서는 BufferedReader의 사용이 더 적합할 수 있습니다. 다양한 문제를 경험함으로써 어디에 어떤 방식을 사용하는 것이 적합할지 판단하는 것이 필요합니다. 

 

 

 

 

 

 

728x90

댓글