나는 java에서 보통 입력을 받을려면 Scanner로 사용하는걸로 알고있었다.
그렇지만 시간과 메모리에 아주 예민한 알고리즘 풀이에 있어서는 여러 방법들이 있다고한다.
첫번째로는 BufferedReader이다.
BufferReader는 Scanner보다 더 빠른 퍼포먼스를 제공한다.
두번쨰로는 StringTokenizer이며, 해당 클래스는 특정 문자를 기준으로 나눠서 출력할 수 있는 클래스이다.
=== 기존 Scanner === (12번이나 호출해야함)
1 2 3 4 5 6 7 8 9 10 11 12
// 한줄 입력
for (int i=0;i<12;i++)
{
sc.nextInt();
}
=== BufferedReader === (공백을 기준으로 잘라서 바로 배열에 넣을 수 있음.)
1 2 3 4 5 6 7 8 9 10 11 12
// 한줄 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
// s[0] = "1";
Integer.parseInt(s[0]) => 1
// s[1] = "2";
// s[2] = "3";
=== StringTokenizer === (split과 비슷하게 특정 문자열을 기준으로 짜르지만 split보다 더 시간효율이 좋다.)
String str = "this%%is%%my%%string";
StringTokenizer st = new StringTokenizer(str,"%%");
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
//== 결과값 ==
//this
//is
//my
//string
'Programming > Java' 카테고리의 다른 글
[JAVA] SOLID - 개방 폐쇄 원칙 OCP(Open Closed Principle) (0) | 2022.03.15 |
---|---|
[JAVA] SOLID - 단일 책임 원칙 SRP(Single Responsibility Principle) (3) | 2022.03.11 |
[JAVA] 문자열을 Reverse 하는 방법 (0) | 2022.03.11 |
[JAVA] StringBuilder란? (개념 / 사용 이유 / 클래스 라이브러리 만들기 / 예제) (0) | 2022.03.08 |
[Java] 정적(Static) 변수와 메서드란? (개념 / 사용 장 단점 / 사용 시기 / 예제) (1) | 2022.01.20 |
댓글