반응형
다시 알고리즘을 공부하면서, 이번에는 파이썬(Python)이 아닌 자바(Java)로 풀어보고 싶어서 이렇게 기록한다. 그 전에 코딩테스트를 볼 때 항상 파이썬으로 봤었다. 솔직히 자바보다 파이썬으로 더 간결하고 쉽게 풀 수 있는 라이브러리들도 많아서 사용했는데, 이제는 자바도 공부를 하고 싶었다.
1. 입출력
1) Scanner 대신 BufferedReader를 사용하기(속도 측면 향상)
Scanner와 BufferedReader의 큰 차이점은 바로 버퍼 사이즈다. Scanner 같은 경우에는 버퍼의 사이즈가 1KB지만, BufferedReader의 버퍼 사이즈는 8KB다. 즉, 8KB 데이터를 읽는다고 가정을 했을 때, Scanner는 1KB씩 8번을 전달할 것이고, BufferedReader는 한 번에 담아 1번만 전달한다. 그래서 속도 차이가 난다.
i) String형으로 입력값 받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputData = br.readLine();
br.close();
ii) int형으로 입력값 받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int inputData = Integer.parseInt(br.readLine());
br.close();
2) System.out.println() 대신 BufferedWriter를 사용하기(속도 측면 향상)
System,out.println()은 속도와 리소스를 많이 잡아먹기 때문에 BufferedWriter를 사용하는게 좋다.
i) BufferedWriter 예제
String inputData = "abcde";
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(inputData);
bw.flush();
bw.close();
3) 공백으로 입력이 이루어진 입력값 분리하는 방법
백준에서 공백으로 이루어진 입력값이 있을 때, 토크나이저를 써도 되지만, 아래와 같은 방법은 일반적인 방법이다. 1줄을 읽어 split을 통해 배열에 담아 사용할 수 있다.
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] inputList = br.readLine().split(" ");
for(int i = 0; i < inputList.length; i++) {
bw.write(inputList[i]);
}
bw.flush(); //abcde 출력
bw.close();
}
}
2022년 8월 7일 v1.0 작성
반응형
'알고리즘' 카테고리의 다른 글
반복문과 재귀의 차이점 (0) | 2021.02.07 |
---|
최근댓글