[★1][백준10171번]고양이 (JAVA)

Date:     Updated:

카테고리:

태그:

[★1][백준10171번]고양이 (JAVA)

10171번 문제 ☞ https://www.acmicpc.net/problem/10171

난이도 ☞ [★1]

고양이

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

      예제입력 예제출력
      \ /\
      ) ( ‘)
      ( / )
      \(__)|

내가 푼 풀이

우선 들어가기에 앞서 자바에서는 몇몇 문자를 단독으로 써서 출력할 수 없는데, 대표적으로 백슬래시(\)와 큰 따옴표(“)가 있다. 그래서 이러한 문자를 출력하기 위해서는 조합을 만들어 출력할 수 있도록 하는데 이를 이스케이프 시퀀스(Escape Sequance)라고 한다. 이스케이프 시퀀스는 백슬래시 + 문자 조합으로 쓰인다.

[ 풀이 1 ]

메모리 : 14128KB
시간 : 112ms

System클래스(표준 입출력)

public class Main {
    public static void main(String[] args){
        
        System.out.println("\\    /\\");
        System.out.println(" )  ( ')");
        System.out.println("(  /  )");
        System.out.println(" \\(__)|");
    }
}

풀이 1번은 가장 기본적인 출력형식으로 출력하였다. 스페이스까지 맞추어줘야해서 많이 까다롭고 힘들었다. 풀이2 번은 같은 기본적인 출력형식이지만 (\n)을 넣어 줄 바꿈을 하여 출력하도록 구현하였다.

[ 풀이 2 ]

메모리 : 13996KB
시간 : 112ms

System클래스(표준 입출력)

public class Main {

	public static void main(String[] args) {

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

이 외의 방법들도 있지만, 이 문제의 요점은 이스케이프 시퀀스인 것 같다. 하나의 풀이를 더 풀어보자면 BufferedWriter을 쓰는 방식으로 구현할 수 있다. 코드는 아래와 같다. 앞의 문제들은 BufferedReader를 썼다. 헷갈리지 않도록 주의해야한다.

[ 풀이 3 ]

메모리 : 13920KB
시간 : 120ms

BufferedWriter

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

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();				// 스트림 종료
	}
}

각 라인마다 bw.newLine();으로 개행을 해주었는데, 이 또한 위의 풀이 2번처럼 \n을 붙여줘서 풀어내려가도 된다. 그 후에 bw.flush()로 스트림에 들어있는 데이터를 비워주고, bw.close()로 스트림을 종료한다.

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기