♟️ 알고리즘/알고리즘_백준

[Java][백준] 백준 환경 파일 입력 꿀팁(tip)

Jerry_K 2025. 3. 9. 12:02

항상 알고리즘 문제는 파이썬으로 풀어왔는데,

최근에 Java와 Java 프레임워크를 배우고 있다.

익숙해지기위해 가끔 Java로 쉬운 알고리즘 쉬운 문제를 풀어보려고한다.  

 

새로운 언어의 코테 문제를 풀려고 할때 (특히 백준) ,

내가 먼저 하는 것은 텍스트 파일을 통해 입력을 자동으로 받는 것이다.

 

이거를 사용하고 안하고의 코드 노가다의 퀄리티가 확 달라진다 ! 


 

 🤖 텍스트 파일을 통해 입력 자동화

  • 백준 문제를 풀다 보면, 해당 예제를 복사해서 붙여 넣는 경우가 많다. 
  • 근데 이게 생각보다 진짜 진짜 귀찮다... 
  • 이런 귀찮음을 텍스트 파일로 간단하게 해결 가능 하다 !! 
System.setIn(new FileInputStream("input.txt"));
  • 현재 Java 파일 경로에 "input.txt" 파일을 만들어 준다.
  • 그리고 텍스트 파일 안에 백준 문제의 입력을 넣어주면 된다. 
  • 그러면 굳이 번거롭게 입력을 수작업으로 넣을 필요 없다. 

아래 예시를 참고해서 사용해보자.


📗 input.txt 예시 

123
456
7 8
1 2 3
  • 이런 입력이 주어졌다고 가정하고, input.txt에 붙여 넣은 값이다. 

📗 코드 예시

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("input.txt"));
        BufferedReader br = new BufferedReader((new InputStreamReader(System.in)));

        // 123
        // 456
        int a = Integer.parseInt(br.readLine());
        int b = Integer.parseInt(br.readLine());

        // 7 8
        String[] tmpStr = br.readLine().split(" ");
        int c = Integer.parseInt(tmpStr[0]);
        int d = Integer.parseInt(tmpStr[1]);

        // 1 2 3
        String arr = br.readLine();

        String[] strNum1 = arr.split(" ");  // split 사용
        
        StringTokenizer st = new StringTokenizer(arr); // StringTokenizer 사용
        int strNum2Cnt = st.countTokens();
        String[] strNum2 = new String[st.countTokens()];
        for (int i = 0; i < strNum2Cnt; i++) {
            strNum2[i] = st.nextToken();
        }

        br.close();

        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        System.out.println("d = " + d);
        System.out.println("strNum1 = " + Arrays.toString(strNum1));
        System.out.println("strNum2 = " + Arrays.toString(strNum2));
    }
}
  • readLine() 메서드로 텍스트에 한 문장씩 가져 올 수 있다.
  •  BufferedReader는 String으로 입력을 받는다. 
    • 떄문에 Int 형으로 변환하려면 Integer.parseInt()를 해야한다. 
  • 배열로 입력을 받고 싶으면 split 메소드 또는 StringTokenizer 클래스를 쓰면 된다.
    • StringTokenizer 같은 경우 레거시 클래스라고하는데, 속도가 split 보다 빠르다고 함

 

[Python][백준] VS코드 환경 파일 실행 및 입력 Tip

🔍알고리즘 VS 코드 환경 세팅맨 처음 알고리즘 문제를 풀 때, VS코드에서 이 버튼을 매번 누르면서 실행을 하고, 입력값을 복붙했다. 뭐 한 두번이면 괜찮은데,코드 테스트 하고, 틀린 것들이

jerry-k.site

파이썬 버전은 이걸로 참고 !