SpringBoot와 JPA를 먼저 배웠지만 순수 자바에 대한 이해도가 높지 못했다.
자바의 숙련도를 높이기 위해서 알고리즘 공부를 자바로 꾸준히 해 나가려 한다.
가장 기본적인 "출력" 에 관한 문제이다.
- 풀이
방법 1 - System 클래스 이용 => [ 표준 입출력 ]
public class Main {
public static void main(String[] args) {
System.out.print("Hello World!");
}
}
백준 알고리즘에서는 클래스 명을 "Main" 으로 해주어야 한다는 것을 기억하자.
방법 2 - BufferedWriter => [ 모아 보내기 ]
위 방법은 Buffer에 있는 IO클래스로서, BufferedWriter, BufferedReader는 데이터를 하나씩 읽어오지 않고
"Buffer"라는 임시 저장고에 저장해두었다가 한번에 출력 / 데이터 전송을 하는 방식이다.
Scanner와 비교해서도 BufferedReader가 훨씬 빠르다.
백준 알고리즘을 풀때 BufferedWriter, BufferedReader를 매우 많이 사용할 것이다.
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();
}
}
방법 3 - StringBuilder이용하기 => [ 문자열 이어 붙이기 ]
BufferedWriter와 유사하다. "데이터를 쌓아두었다가 한 번에 출력한다"
문자열을 이어붙여 주는 기능이 있어 문자열을 조작할 때 사용하게 될 것이다.
public class Main {
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
sb.append("Hello World!");
System.out.println(sb);
}
}
방법 4 - StringBuffer이용하기 => [ 동기화 지원 ]
StringBuilder와 거의 같다. StringBuilder와 차이점이라면, StringBuffer는 동기화를 지원한다.
public class Main {
public static void main(String[] args){
StringBuffer sb = new StringBuffer();
sb.append("Hello world!");
System.out.println(sb);
}
}
그 말인 즉슨, "멀티쓰레드 환경에서 문자열이 리소스로 사용된다면 StringBuffer를 이용해야한다." 는 것이다.
- 마무리
데이터양, 테스터 양이 적은 경우에는 별로 차이가 없지만 데이터 양이 많아지면 System.out.println()과 같은 표준 입출력은 하나씩 출력하기에 속도 저하로 시간초과가 되어 문제를 해결하지 못할 수 있다.
출력속도를 비교하자면
아래 사이트를 참고하면 좋다
https://www.acmicpc.net/blog/view/57
'Programming > 알고리즘' 카테고리의 다른 글
[백준] 10869번 - 사칙연산 -Java[자바] (0) | 2022.11.22 |
---|---|
[백준] 1008번 - A/B JAVA [자바] (0) | 2022.11.22 |
[백준] 1000번 : A+B - JAVA [자바] (0) | 2022.11.22 |
[python 파이썬] 백준 2839 설탕배달 (0) | 2022.03.10 |
[python 파이썬] 백준 10250 ACM호텔 (0) | 2022.03.10 |