BOJ 문제를 해결하기 위한 입력/출력 템플릿(JAVA)

백준온라인판사(이하 백준, BOJ)는 아마도 한국에서 가장 유명한 알고리즘 학습 사이트일 것입니다. DP를 공부하면서 프로그래머의 문제를 배우는 것만으로는 한계가 있어서 백준이의 문제를 풀려고 하는데 백준이가 입출력을 못한다. 그것은 방해한다.

프로그래머는 메소드에 응답을 작성하고 입력을 매개변수로 받아 리턴과 함께 응답을 보내는 편리함을 제공하지만 백준은 그렇지 않습니다.

백준의 경우 입력은 콘솔 입력으로 받고 응답은 콘솔 출력으로 전달한다. 그런 다음 이러한 성가신 점이 발생합니다.

  1. 항목은 문자열로 작성됩니다. 숫자 계산이 필요한 경우 문자열 계산을 다시 수행해야 합니다.
  2. 콘솔에서 입력을 받는 코드를 작성해야 하며, Java 기초를 공부하면서 배운 Scanner, System.out.println 등을 이용하면 유용하게 사용할 수 있습니다. 속도가 느려집니다.
  3. 코드를 로컬에서 실행할 때 IntelliJ 환경에서 입력 값을 전달해도 입력이 끝나지 않습니다. 그러면 백준 사이트에서 작동하는데 로컬에서 실행할 수 없는 상황이 발생한다.
    (null이 입력되지 않은 것 같습니다. -> IntelliJ는 입력을 받는 데 걸리는 시간을 모릅니다.)

매번 같은 일을 하라 게으른그래서 io.Buffers로 속도를 높이고 입출력과 로직을 분리할 수 있는 일종의 템플릿을 만들었습니다.

나는 이 템플릿으로 내가 만나는 모든 백준의 문제를 해결할 계획이다. 사용하면서 개선하려고 합니다.


백준 X Java I/O 템플릿

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;

/*
* 속도 중요한 문제에는 안 좋을 수 있을 것 같다.
* 테스트용 EOF : ""
* 문제에서 EOF 가 따로 주어진다면 수정해야 한다.
* */


public class Main {
    public static void main(String() args) throws Exception {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        List<String> inputList = new ArrayList<>();
        String line;
        while ((line = br.readLine()) != null){
            // if(line.equals("")) break; //intellij 콘솔에서 테스트 하려면 필요하다.
            inputList.add(line);
        }
        String result = answer(inputList);
        bw.write(result);
        bw.flush();
        bw.close();
        br.close();
    }
    
    //로직 작성
    static String answer(List<String> input){
        
        StringBuilder sb = new StringBuilder();
        for(String s : input) {
            sb.append(s).append(',').append(' ');
        }
        
        return sb.toString();
    }
}

사용하는 방법

  • while 루프의 주석을 제거하십시오.
  • main()을 실행하고 솔루션 문제의 예제 입력을 콘솔에 붙여넣고 Enter 키를 누릅니다.
  • Enter 키를 다시 누릅니다.
  • 입력한 값이 콘솔 출력에 나타나는지 확인합니다.
  • 정상적으로 작동하면 답변 내용을 삭제하고 포함된 문제를 풀 수 있습니다.