[BaekJoon] 10171번 - 고양이 (java)

1. 문제

👉 문제 바로가기

- 조건

시간 제한 메모리 제한
1초 256MB


- 문제

아래 예제와 같이 고양이를 출력하시오.

- 입력

없음

- 출력

고양이를 출력한다.

- 예제

  입력      출력  
  \        / \
  )     (   ’ )
(     /    )
 \ (_ _)|





2. 풀이

자바에서 백슬래시( \ )따옴표( ' , " ) 등은 그 자체만으로 출력되지 않는 문자이다.
이러한 문자를 출력하기 위해 문자 앞에 백슬래시( \ )를 넣어주는데, 이 조합을 이스케이프 시퀀스(Escape Sequence)라고 한다.

  입력      출력  
\ \ |
\ ‘
\ “
\n 줄 바꿈
\r 줄의 맨 처음으로
\t
\b 커서를 한 문자 앞으로(backspace)
\0 빈칸(null)




3가지 방법을 사용해서 출력을 해보려 한다.

  1. System.out.println()
  2. BufferedWriter 클래스
  3. StringBuilder 클래스


- 1. System.out.println()

고양이 그림 문자열은 위 문제의 예제 출력을 드래그해서 복사하면 된다.
가독성을 높이기 위해 ‘\n’ 을 지우고 각 행마다 println()을 사용했다.

public class Main {
	public static void main(String[] args) {

		System.out.println("\\    /\\");
		System.out.println(" )  ( ')");
		System.out.println("(  /  )");
		System.out.println(" \\(__)|");
	}
}





- 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(" )  ( ')");
		bw.newLine();	
        
		bw.write("(  /  )");
		bw.newLine();
        
		bw.write(" \\(__)|");
        
		bw.flush(); //버퍼를 비우고 한번에 출력
		bw.close();
	}
}

write() 메서드 안에 출력하고자 하는 문자열을 쓴다.

newLine() 메서드로 개행을 해준다. 또는, write() 안에 ‘\n’을 붙여줘도 된다.

flush() 메서드로 스트림에 들어있는 데이터를 비우고 출력한다.

close() 메서드로 사용한 스트림을 종료하고 자원을 반환한다.




- 3. StringBuilder 클래스

public class Main {
	public static void main(String[] args){
 
		StringBuilder sb = new StringBuilder();

		sb.append("\\    /\\\n");
		sb.append(" )  ( ')\n");
		sb.append("(  /  )\n");
 		sb.append(" \\(__)|\n");
		
		System.out.println(sb);
	}
}

StringBuilder는 개행해주는 메소드가 없기 때문에 각 문자열의 끝에 \n 으로 개행을 해준다.

append() 메서드는 뒤에 계속해서 문자열을 추가해주는 함수이다.





관련 페이지




Categories:

Updated:

Leave a comment