이 영역을 누르면 첫 페이지로 이동
Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

페이지 맨 위로 올라가기

Stranger's LAB

프로그래밍과 관련하여 다양한 알고리즘 문제를 풀어보고, 프로그래밍 언어를 이해해 볼 수 있도록 돕고자 만든 블로그 입니다.

[백준] 10171번 : 고양이 - JAVA [자바]

  • 2020.02.02 02:56
  • JAVA - 백준 [BAEK JOON]/입출력과 사칙연산
글 작성자: ST_
728x90



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

 

10171번: 고양이

문제 아래 예제와 같이 고양이를 출력하시오. 입력 출력 고양이를 출력한다. 예제 입력 1 복사 예제 출력 1 복사 \ /\ ) ( ') ( / ) \(__)|...

www.acmicpc.net







  • 문제



 

 




  • 4가지 풀이 방법을 이용한다.

 

System 클래스, BufferedReader, StringBuilder, StringBuffer 를 이용하여 풀이 할 것이다.

 

기본 사용 방법은 "Hello World" 와 "We love kriii" 에서도 잠깐 언급했으니 참고해보아도 좋을 듯 하다.

 

 

 

https://st-lab.tistory.com/2

 

[백준] 2557번 : Hello World - JAVA [자바]

https://www.acmicpc.net/problem/2557 2557번: Hello World Hello World!를 출력하시오. www.acmicpc.net 문제 첫 글로 백준 알고리즘 사이트의 문제를 포스팅했다. 앞으로도 쭉 이 사이트의 단계별 문제들을 풀..

st-lab.tistory.com




https://st-lab.tistory.com/6

 

[백준] 10718번 : We love kriii

https://www.acmicpc.net/problem/10718 10718번: We love kriii ACM-ICPC 인터넷 예선, Regional, 그리고 World Finals까지 이미 2회씩 진출해버린 kriii는 미련을 버리지 못하고 왠지 모르게 올 해에도 파주 Wor..

st-lab.tistory.com

 

 

 

 

 




  • 들어가기 전에 [중요]

 

자바에서는 몇몇 문자는 단독으로 써서 출력할 수 없다. ( 대표적으로 백슬래시와 큰 따옴표가 있다. )

그래서 문자를 출력하기 위해 조합을 만들어서 출력할 수 있도록 하는데 이를 Escape Sequance 라고 한다.

이스케이프 시퀀스는 백슬래시(\) + 문자 의 조합으로 쓰인다.

 

 

아래를 보자.

 

\ 또한 단독으로 출력이 불가능한 문자다. 실제로 이클립스에서 코딩하면 아래와 같이 경고가 뜬다.

 

 

이렇게 말이다. 그럼 어떻게 출력하냐?

간단하다. 백슬래시+문자 조합이라 했으니 백슬래시를 두 번 쓰면 된다.

 

 

 



이렇게 해주고 컴파일을 하면 아래와 같이 역슬래시 하나만 출력이 가능해진다.

 








  • 풀이

 

- 방법 1  ( System 클래스 - 표준 입출력 )

 

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

	}
}

 

고양이 그림 문자열은 위 문제의 예제출력을 드래그해서 복사하면 된다.

 

System.out.println(""); 에서 "" 안에 그대로 복사해서 넣으면 이렇게 나온다.

 

 

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

 

이렇게 바로 출력해도 되지만 가독성을 더 높이기 위해서 수정하고자 한다면 각 + 전에 \n 만 지워서 각 열마다 println(); 으로 나눠주어 위처럼 만들면 된다.

 

 

 




- 방법 2 

 

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();
	}
}

 

 

BufferedWriter 을 쓰는 방식이다. 

각 라인마다 bw.newLine(); 으로 개행을 해준다. 물론 이를 쓰지 않고 각 write 마다 \n 을 붙여줘도 된다.

 

 

이후 bw.flush() 로 스트림에 들어있는 데이터를 비운다.

그리고 bw.close() 로 스트림을 종료해준다.

 

 

 




- 방법 3

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 를 이용하는 방법이다. 

 

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

 

 

 




- 방법 4

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

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



이것도 StringBuilder랑 똑같다.

 

 

 

 




  • 정리



오늘의 가장 중요한 키워드라 하면 이스케이프 문자 (제어문자) 이지 않을까 싶다.

 

정답비율이 40% 쯤 되는 이유도 따로 통합개발환경 (ex. Eclipse) 에서 코딩해보거나 컴파일 해보지 않고 백준 웹에서 바로 작성하여 제출하다 보니 이스케이프 문자를 생각하지 못하여 이러한 결과가 나왔으리라 본다.

 

이스케이프 문자에 대해선 따로 포스팅하고 링크를 여기에 다시 걸 수 있도록 하겠다.



저작자표시 비영리 변경금지 (새창열림)

'JAVA - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글

[백준] 10998번 : A×B - JAVA [자바]  (0) 2020.02.07
[백준] 1001번 : A-B - JAVA [자바]  (0) 2020.02.06
[백준] 1000번 : A+B - JAVA [자바]  (25) 2020.02.06
[백준] 10172번 : 개 - JAVA [자바]  (2) 2020.02.03
[백준] 2557번 : Hello World - JAVA [자바]  (13) 2020.01.29

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [백준] 1001번 : A-B - JAVA [자바]

    [백준] 1001번 : A-B - JAVA [자바]

    2020.02.06
  • [백준] 1000번 : A+B - JAVA [자바]

    [백준] 1000번 : A+B - JAVA [자바]

    2020.02.06
  • [백준] 10172번 : 개 - JAVA [자바]

    [백준] 10172번 : 개 - JAVA [자바]

    2020.02.03
  • [백준] 2557번 : Hello World - JAVA [자바]

    [백준] 2557번 : Hello World - JAVA [자바]

    2020.01.29
다른 글 더 둘러보기

정보

Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

  • Stranger's LAB의 첫 페이지로 이동

검색

나의 외부 링크

  • st-github

공지사항

  • 공지 - 블로그 사용 설명서

메뉴

  • 홈
  • 방명록

카테고리

  • 전체 카테고리 (267)
    • Java (5)
    • JAVA - 백준 [BAEK JOON] (177)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (10)
      • 기본 수학 1 (8)
      • 기본 수학 2 (6)
      • 2차원 배열 (0)
      • 정렬 (10)
      • 재귀 (4)
      • 브루트 포스 (5)
      • 집합과 맵 (0)
      • 기하 1 (5)
      • 정수론 및 조합론 (12)
      • 백트래킹 (8)
      • 동적 계획법 1 (15)
      • 누적 합 (0)
      • 그리디 알고리즘 (5)
      • 스택 (5)
      • 큐, 덱 (7)
      • 분할 정복 (9)
      • 이분 탐색 (7)
      • 기타 문제 (17)
      • 별 찍기 문제 모음 (2)
    • C++ - 백준 [BAEK JOON] (46)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (0)
      • 기타 문제 (4)
    • 자료구조 (18)
      • Java (18)
    • 알고리즘 (11)
      • Java (11)
    • 프로그래밍 기초 (6)
    • 이모저모 (2)
    • 일상의 글 (2)

최근 글

정보

ST_의 Stranger's LAB

Stranger's LAB

ST_

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © ST_.

티스토리툴바