일단 씻고 나가자

[Java] 백준 입출력 템플릿 form 본문

Coding-Test/백준을 자바라

[Java] 백준 입출력 템플릿 form

일단 씻고 나가자 2024. 8. 22. 17:32

백준 알고리즘 문제 풀 때 일일이 I/O 쓰시기 번거로우셨죠?

귀찮음을 해소해드리고자 직접 만든 템플릿을 소개합니다.

복사해서 메모장 같은 곳에 저장하시고 문제 풀 때마다 붙여넣고 푸시면 편리할 것 같습니다.

 

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

public class Main {
    
    public static void main(String args[]) throws Exception {
        
        // reader.readLine()
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        // writer.append("").append("\n")
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // String -> int/long
        // int n = Integer.parseInt(reader.readLine());
        // long n = Long.parseLong(reader.readLine());
        
        // String -> int[]/long[]
        // int[] arr = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // long[] arr = Arrays.stream(reader.readLine().split(" ")).mapToLong(Long::parseLong).toArray();
        
        
        // print answer
        writer
            //.append("")		// .append(Integer.toString(1))
            .flush();
    }
}

 

 

 

다량의 입출력을 대비하여 I/O 기본을 Stream~ 류로 작성하였고,

throws Exception을 추가하여 지저분한 try catch를 제거했습니다.

(실제로 Scanner보다 Stream류의 속도가 빠르고, 이 차이로 통과하지 못하는 문제도 있습니다)

 

 

 

해당 입출력 객체의 간단한 사용법 또한 주석으로 달아두었습니다.

  • reader의 경우 readLine() 메서드는 한 줄씩 문자로 입력 받습니다.
  • writer의 경우, append("") 로 답을 추가해주시면 되고,
    만약 답 출력에 줄바꿈이 필요하다면 .append("\n") 을 작성해주시면 됩니다.

 

        // print answer
        writer
            .append("answer")	// .append(Integer.toString(1))
            .flush();

 

답이 간단하게 하나로 출력되는 경우,

가장 하단 writer의 .append() 부를 주석 해제하시고 바로 정답 변수를 넣어주시면 됩니다.

 

단, 정답이 숫자인 경우,

writer는 숫자 변수를 담지 못하여

숫자 자료형을 문자 자료형으로 파싱해주어야 합니다.

주석 처리된 예시처럼 [숫자_Wrapper_class . toString( ~ )] 과 같은 방식으로 넣어주시면 됩니다.

( ex. Long의 경우 Long.toString(long 변수) , Double의 경우 Double.toString(double 변수) )

 

 

 

        // String -> int/long
        // int n = Integer.parseInt(reader.readLine());
        // long n = Long.parseLong(reader.readLine());

 

한 줄에 하나씩의 숫자가 주어지는 경우,

줄마다 숫자로 파싱해주는 해당 구문을 활용하시면 됩니다.

 

단, 해당 구문은 "한 줄"을 기준하므로,

여러 줄의 경우 구문을 여러번 적으시거나, for문 등을 활용하고

각 다른 변수에 담아 파싱해주셔야 합니다.

 

 

 

        // String -> int[]/long[]
        // int[] arr = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // long[] arr = Arrays.stream(reader.readLine().split(" ")).mapToLong(Long::parseLong).toArray();

 

한 줄에 여러 개의 숫자가 주어지는 경우,

띄어쓰기로 구분된 여러 숫자를 파싱하여 배열에 담아주는 해당 구문을 활용하시면 됩니다.

 

이 역시 "한 줄"을 기준하므로,

여러 줄의 경우 이차원 배열을 활용하시거나 컬렉션에 담아

각 배열을 활용하셔야 합니다.

 

 

입력 범위가 20억을 넘지 않는다면 int 류를, 넘는다면 long 류를 사용하시면 될 것 같습니다.

 

 

 

< 간소화 버전 >

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

public class Main {
    
    public static void main(String args[]) throws Exception {
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // int n = Integer.parseInt(reader.readLine());
        // int[] arr = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        
        writer
            //.append("")		// .append(Integer.toString(1))
            .flush();
    }
}

 

 

 

 

 

많은 도움이 되셨으면 좋겠습니다 ^-^

 

 

 

'Coding-Test > 백준을 자바라' 카테고리의 다른 글

1254번 : 팰린드롬 만들기  (0) 2023.04.03
24174번 : 알고리즘 수업 - 힙 정렬 2  (0) 2023.03.22
1158번 : 요세푸스 문제  (1) 2023.03.17
26008번 : 해시 해킹  (0) 2023.03.16
10818번 : 최소, 최대  (2) 2023.03.15