▶ 문제
https://www.acmicpc.net/problem/2557
2557번: Hello World
Hello World!를 출력하시오.
www.acmicpc.net
▶ 설명
입출력의 가장 기본이 되는 코드이다.
출력에 System.out.println 만 있다고 알고 있다면 오산이다.
이외에도 BufferedWriter, StringBuilder, StringBuffer 등의 문자열 관련 클래스를 이용하면
보다 높은 성능의 입출력 코드를 구현할 수 있다.
▶ 문제 풀이
🌱 풀이 1. 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 는 문자들을 담는 임시메모리라고 생각하면 된다.
출력할 문자들을 bw에 임시로 담아 코드를 실행할 때 한꺼번에 보여주게 된다.
따라서 한줄 한줄 출력하는 System.out.println() 보다도 한꺼번에 출력하기 때문에 성능이 좋다.
bw.write( ) 메소드 안에 출력할 문자들을 넣으면 되고,
bw.write( ) 메소드를 사용할 시 반드시 IOException 예외처리를 해주어야 한다.
끝에는 bw.flush()와 bw.close() 메소드를 입력하여서 마무리를 짓도록 한다.
flush() 메소드는 문자를 저장하는 버퍼를 비우는 역할을 한다.
스트림 클래스 BufferedWriter 의 주요 메소드 ↓
- newLine() : 개행
- write(int c) : 문자 쓰기
- write(char[] cbuf, int off, int len) : 문자 타입의 배열에서 off 인덱스 위치부터 len 만큼까지 문자 쓰기
- write(String s, int off, int len) : 문자열에서 off 인덱스 위치부터 len 만큼까지 문자 쓰기.
- flush() : 문자를 저장하는 버퍼를 비우기
- close() : 스트림 닫기
🌱 풀이 2. StringBuilder 사용
public class Main{
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Hello World!");
System.out.println(sb);
}
}
append를 하나 더 추가하여 Hello 와 World!를 따로 입력할 수도 있다.
public class Main{
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World!");
System.out.println(sb);
}
}
일단, new StringBuilder() 라고 입력하여 StringBuilder 클래스를 사용하겠다는 선언을 먼저 해준다.
BufferedWriter클래스와 다르게 별도의 import를 하지 않아도 된다.
그리고 역시 System.out.println 보다도 성능이 좋다.
sb.append( ) 메소드를 이용해서 출력할 문자들을 입력하도록 한다.
sb라는 StringBuilder 에는 입력한 문자들이 저장이 된다.
>>> 만약 개행을 한다면!?
만약 개행을 하게 될 경우에는 개행문자 \n 가 추가가 된다.
예를 들어
Hello
World
처럼 Hello 와 World 사이에 개행이 이루어졌다면 다음과 같이 \n를 입력하여야 한다.
sb.append("Hello\n");
sb.append("World");
이렇게 되면 StringBuilder 안에는 Hello\nWorld가 저장되어 있게 된다.
append 메소드를 쓸 때마다 문자열을 이어서 저장하는 것이다.
🌱 풀이 3. StringBuffer 사용
public class Main{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append(" World!");
System.out.println(sb);
}
}
StringBuild 클래스의 사용과 비슷하게 사용되고 원리도 비슷하다.
🌱 풀이 4. System.out.println 사용
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
내가 알고 있던 가장 기본이 되는 출력 방법이다.
개행을 기본으로 하고 있기 때문에 사용하기에 편리하나 성능면에서는 한줄 한줄 호출해야 해서
느리다는 단점을 갖고 있다.
많은 양의 데이터를 출력해야할 경우엔 좋은 코드 사용은 아니다.
▶ Log
'백준 알고리즘 > 입출력' 카테고리의 다른 글
백준 10869번 :: 사칙연산 (0) | 2022.05.14 |
---|---|
백준 1001번 :: A-B (0) | 2022.05.14 |
백준 25083 :: 새싹 (0) | 2022.05.14 |
백준 10171 :: 고양이 (0) | 2022.05.13 |
백준 10718 :: We love kriii (0) | 2022.05.13 |