문제
예제
새로 알게 된 것
StringBuilder 클래스
String
클래스는 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못한다.
StringBuilder
클래스는 같은 인스턴스 안의 문자열(char 배열) 필드 값을 추가하거나 변경할 수 있다. 즉 원본 문자열을 바꿀 수 있다.
문자열을 다루는 메서드도 더 많이 포함되어 있다. Oracle Java documentation - StringBuilder
append()
: 문자열 덧붙임capacity()
: String이 저장된 char[] 배열 사이즈를 리턴함delete(int start, int end)
: 특정 위치의 문자열 제거deleteCharAt(int index)
: 특정 인덱스의 문자열 제거insert()
: 특정 위치에 문자열 삽입
문제 적용
그냥 푸니까 문제점이 개행이 제대로 되지 않는 거였다.
입력값을 한번에 넣더라도 문장이 끝날때 마다 \n
이 붙어있으니까 한꺼번에 출력하면 똑같이 개행되며 출력될거라고 생각했는데 멍청한 생각이었다...
BufferedReader
의 readLine()
메서드는 라인별로 문자열을 읽어들이기 때문에 개행문자는 저장되지 않는다.
한 라인을 읽어들인 후 저장된 문자열에 StringBuilder
의 append()
메서드로 "\n"
을 덧붙여준다.
입력이 null일 때까지 반복한 후 toString()
메서드로 출력하면 이때까지 모인 문자열들이 그대로 출력된다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
String line = null;
while((line = in.readLine()) != null) {
sb.append(line).append("\n");
}
out.write(sb.toString());
out.flush();
out.close();
}
}
'PS(Java) > 백준' 카테고리의 다른 글
[PS] 백준 1924번 2007년 (0) | 2022.01.30 |
---|---|
[PS] 백준 11721번 열 개씩 끊어 출력하기 (0) | 2022.01.28 |
[PS] 백준 단계별로 풀기 - 10757번 큰 수 A+B (0) | 2022.01.24 |
[PS] 백준 단계별로 풀기 - 배열(2), 함수 (0) | 2022.01.12 |
[PS] 백준 단계별로 풀기 - 1차원 배열 (0) | 2022.01.12 |