항상 알고리즘 문제는 파이썬으로 풀어왔는데,
최근에 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
파이썬 버전은 이걸로 참고 !
'♟️ 알고리즘 > 알고리즘_백준' 카테고리의 다른 글
[Python][백준] 1365. 꼬인 전깃줄 / LIS,이분탐색(G2) (0) | 2025.02.13 |
---|---|
[Python][백준] 2170. 선 긋기/ 정렬,스위핑 (G5) (0) | 2025.02.07 |
[Python][백준] 1700. 멀티탭 스케줄링 / 그리디 (G1) (0) | 2025.01.29 |
[Python][백준] 2252. 줄 세우기 / 위상정렬, DAG (G3) (0) | 2025.01.28 |
[Python][백준] 1916. 최소비용 구하기/ 다익스트라, 최단 경로 (G5) (0) | 2025.01.27 |