충분히 쌓여가는
백준[Java] 2557번 Hello World(BufferedWriter) 본문
https://www.acmicpc.net/problem/2557
문제풀이 방법1
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 클래스 이름을 Main으로 해야 컴파일 에러가 뜨지 않는다
- 문제 제목만 보고 Hello World나 Hello world 혹은 HelloWorld 등으로 대소문자와 !와 같은 문자를 확실히 인식 후 println문 안에 적어야 정답으로 처리된다
- 이 문제 에선 Hello World!를 입력해야 정답!
BufferedWriter, StringBuilder, StringBuffer를 사용하여 문제를 풀기도 하던데 정확히 어떻게 하는지 몰라 알게되면 추가해 둘 것이다.
방법 2
백준 문제를 풀면서 BufferedWriter를 사용할 때가 왔다
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello World!");
bw.flush();
bw.close();
}
}
BufferedWriter/BufferedReader
- Buffer에 있는 IO클래스로 데이터를 하나씩 읽어오는 것이 아닌 임시공간(버퍼)에 저장해두었다가 한 번에 출력 또는 데이터를 보내는 방식
- 빠른 A+B문제를 Scanner 로 풀다가 시간초과가 발생해 구글링해보니 Scanner보다 BufferedReader이 빠르다고하여 공부해보았다
- ex. 1000개의 데이터를 1개씩 보내는게 아니라 임시로 한 공간에 담아둔 뒤 한 번에 보내는 방법이니 당연 성능면에서 우수함
- 속도가 빠르다고 생각하기
- 특히 scanner 는 bufferedReader 보다 상당히 느린데, 이게 문제가 되는 것이 나중에 백준 알고리즘들을 풀다 보면 시간 초과로 통과하지 못하는 상황이 발생하니 익혀두는 것이 좋다
방법 3
StringBuilder 를 이용하는 방법
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Hello World!");
System.out.println(sb);
}
}
- BufferedWriter 와 유사하게 데이터를 모아두었다가 한 번에 출력함
- 특히 문자열을 조작할 때 매우 유용
- 특징: StringBuilder에서 문자열을 이어 붙인다는 점
방법 4
StringBuffer
public class Main {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello World!");
System.out.println(sb);
}
}
- StringBufferStringBuilder랑 거의 비슷함
- StringBuilder와 차이점: StringBuffer은 동기화를 지원
- multi-thread 상황에서 문자열이 리소스로 사용된다면 StringBuffer을 사용
- StringBuilder은 동기화를 지원하지 않음
- 동기화 지원하기 때문에 StringBuilder보다는 느리지만 문자열 조작에 있어 String 보다 빠름
'IT > Java[백준]' 카테고리의 다른 글
백준[Java] 1001번 A-B (0) | 2023.02.12 |
---|---|
백준[Java] 1000번 A+B (1) | 2023.02.10 |
백준[Java] 25083번 새싹 (0) | 2023.01.03 |
백준[Java] 10172번 개 (0) | 2023.01.03 |
백준[Java] 10171번 고양이 (0) | 2023.01.03 |