[JAVA] 코테 준비할 때 알면 좋은 문법

개발하는 파랑이·2023년 11월 18일

CodingTest

목록 보기
1/9

StringBuilder

String 객체는 연산이 안되는 변경이 불가능한 객체이다. 하지만 우리는 코테 문제를 풀 때 연산을 무조건 할 일이 생긴다.
이럴 때마다 문자열 객체를 계속 생성한다면 낭비되는 메모리가 많아 무척이나 비효율적이다.

그러므로 변경 가능한 문자열을 만들어주는 StringBuilder 객체를 사용해야 한다.
만약 단순 출력이 아닌 String 형식으로 return 해야 한다면 반드시 toString()을 해야 한다.
❗️아래의 버퍼와 같이 쓸 때에는 혹여 버퍼에 남아있는 데이터 때문에 값이 제대로 출력되지 않을 수 있기 때문에 StringBuilder 사용을 추천한다

<예시 - 백준 10171>

StringBuilder stringBuilder = new StringBuilder(); // StringBuilder 객체 생성
stringBuilder.append("\\    /\\\n"); //.append()로 추가
stringBuilder.append(" )  ( ')\n");
stringBuilder.append("(  /  )\n");
stringBuilder.append(" \\(__)|\n");
System.out.println(stringBuilder); // 출력

결과

\    /\
 )  ( ')
(  /  )
 \(__)|

BufferedReader

빠른 입력을 위해 사용된다. 입력이 있을 때마다 즉시 전달하는 것이 아닌 버퍼에 담아서 한번에 전달하는 방식이다.
이렇게 되면 입력할 내용이 많을 때 훨씬 효율적으로 처리할 수 있다.
(출력도 비슷하다. 많은 내용을 출력할 땐 BufferedWriter을 사용하면 된다.)

BufferedReader는 Scanner와 유사하지만 속도가 더 빠르며 동기화가 되기 때문에 멀티 스레드 환경에서 사용하기 적합하다.

// 사용 시 import 필요
import java.io.BufferedReader;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 생성
String s = br.readLine(); // 한 줄 입력
int n = Integer.parseInt(br.readLine()); // 항상 String 타입이므로 형변환 필요

그리고, 예외처리를 반드시 해야 한다. 난 throws IOException으로 예외처리를 한다.

StringTokenizer

BufferedReader로 입력받을 경우 개행단위로만 데이터를 분리할 수 있으므로 StringTokenizer를 사용해 공백단위로 분리할 수 있다.
아무런 조건이 없다면 기본적으로 띄어쓰기 단위로 분리한다.

데이터 가공을 위해 사용한다고 생각하면 된다.

// 사용 시 import 필요
import java.uitl.StringTokenizer;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 생성
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
profile
이것저것 개발자

0개의 댓글