👉🏻 4가지 풀이방법을 이용한다.
System 클래스, BufferedReader, StringBuilder, StringBuffer를 이용하여 풀이한다.
👉🏻 이스케이프 사용
큰 따옴표(")나 백슬래시(\)는 단독으로 써서 출력할 수 없다. 이를 출력하기 위해 특정 구문을 사용하는데 이를 이스케이프 한다고 말한다.
결합된 그 문자를 Escape Sequence 라고 하는데 백슬래시(\)와 문자 하나를 결합하여 나타낸다. 우리가 흔히 쓰는 \n \t 같은 것도 이스케이프 시퀀스다.
(이스케이프 시퀀스 = 이스케이프 문자 = 제어문자 모두 같은말)
즉 백슬래시를 출력하면 ("\\")로 해줘야 백슬래시(\) 하나가 출력되며, 백슬래시 두개를 출력하고 싶은경우("\\\\")로 해주어야 2개가 출력된다.
자바에서 사용하는 표준 문자열 이스케이프 리스트다.
👉🏻 방법1(System 클래스 - 표준입출력)
public class Main {
public static void main(String[] args) {
System.out.println("|\\_/|");
System.out.println("|q p| /}");
System.out.println("( 0 )\"\"\"\\");
System.out.println("|\"^\"` |");
System.out.println("||_/=\\\\__|");
/* 그 외의 방법들
System.out.print(
"|\\_/|\n" +
"|q p| /}\n" +
"( 0 )\"\"\"\\\n" +
"|\"^\"` |\n" +
"||_/=\\\\__|");
System.out.printf("%s", "|\\_/|\n
|q p| /}\n
( 0 )\"\"\"\\\n
|\"^\"` |\n
||_/=\\\\__|");
*/
}
}
큰 따옴표와 백슬래시는 단독으로 쓰여 출력할 수 없으니 이스케이프 해준다.
👉🏻 방법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("|\\_/|");
bw.newLine(); // 줄 구분자
bw.write("|q p| /}");
bw.newLine();
bw.write("( 0 )\"\"\"\\");
bw.newLine();
bw.write("|\"^\"` |");
bw.newLine();
bw.write("||_/=\\\\__|");
bw.flush();
bw.close();
}
}
개행을 bw.newLine(); 대신에 각 문자열 맨 마지막에 \n으로 개행해주어도 무방하다.
👉🏻 방법3. Stringbuilder
public class Main {
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
sb.append("|\\_/|\n");
sb.append("|q p| /}\n");
sb.append("( 0 )\"\"\"\\\n");
sb.append("|\"^\"` |\n");
sb.append("||_/=\\\\__|\n");
System.out.println(sb);
}
}
StringBuilder는 여러 문자열을 append 확장시켜주는 것이기 때문에 sb에 하나의 문자열로 연결된다.
👉🏻 방법4 StringBuffer
public class Main {
public static void main(String[] args){
StringBuffer sb = new StringBuffer();
sb.append("|\\_/|\n");
sb.append("|q p| /}\n");
sb.append("( 0 )\"\"\"\\\n");
sb.append("|\"^\"` |\n");
sb.append("||_/=\\\\__|\n");
System.out.println(sb);
}
}
StringBuilder랑 동일하다. 현 단계에서는 multi-thread를 사용하지 않기 때문에 굳이 StringBuilder를 두고 속도가 상대적으로 더 느린 StringBuffer를 사용할 필요는 없다.
Uploaded by Notion2Tistory v1.1.0