Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

백준[Java] 2557번 Hello World(BufferedWriter) 본문

IT/Java[백준]

백준[Java] 2557번 Hello World(BufferedWriter)

빌드이너프 2023. 2. 10. 14:43

https://www.acmicpc.net/problem/2557

 

2557번: Hello World

Hello World!를 출력하시오.

www.acmicpc.net


문제풀이 방법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 보다 빠름

출력 성능 관련 글

 

출력 속도 비교

여러가지 언어와 출력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 총 N개의 줄에 1부터 10,000,000까지의 자연수를 한 줄에 하나씩 출력하는 시간을 측정. 10번 측정해서 평

www.acmicpc.net

 

'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