자바로 알고리즘을 풀면서 알게된 입력방법과 출력방법이다. 일반적으로 Scanner
를 많이 쓰게되는데 시간초과가 발생하는 문제를 만난 이후로 BufferedReader
를 이용하여 입력을 받는 방식을 이용하고 있다.
보통 자바 알고리즘을 풀때 다음과 같은 방식을 많이 사용한다. 이 방법이 나쁘다는 것은 아니지만 입력개수가 많아지게 되면 시간초과가 발생하는 경우도 있어 다른 방식도 기록하려 한다.
Scanner
Scanner sc=new Scanner(System.in);
BufferedReader
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
BufferedReader
를 이용하여 입력을 받는데 이때 System.in
을 직접적으로 받을 수 없기때문에 InputStreamReader
라는 보조 스트림으로 연결해준다.
StringTokenizer
를 이용하여 받은 입력값을 구분자로 분리해주는 작업을 한다.
물론 split()
을 이용할 수도 있다.
주의해야 할 점이라면
String
형식으로 받아오기 때문에 숫자를 받기 위해서는 Integer.parseInt()
으로 변환해줘야 한다.br.readLine()
은 한 줄씩 받아오는 것이기 때문에 여러줄을 입력을 받게 되는 경우에는 st=new StringTokenizer(br.readLine());
매번 이 코드를 적어줘야 한다. (for문)또한 출력에서도 많은 값을 출력하는 과정에서 시간초과가 발생하는 경우가 있는데 이때는 StringBuilder
를 이용한다.
StringBuilder
StringBuilder sb=new StringBuilder();
sb.append(출력값+"\n");
위와 같은 방식으로 사용하고 마지막 코드가 끝날때 System.out.println(sb);
를 해주면 된다.
혼자서만 알고리즘을 풀려고 했으면 이러한 방법을 알지 못했을 것 같다. 주위에서 자바로 알고리즘을 푸는 사람들의 조언을 얻으면서 자바로 알고리즘을 푸는 방식을 알아가고 있다.