본문 바로가기

JAVA

자바 특수문자, 괄호, 백슬래시, 따옴표 출력하기 (백준 10171, 10172번)

자바에서 백슬래시와 따옴표는 문자 그 자체만으로는 출력되지 않는 특수문자이다.

따옴표가 그 자체만으로 출력되지 않는 이유는, 출력문에서는 첫 쌍따옴표부터 그 다음 쌍따옴표가 나올 때 까지 그 사이에 있는 것들만 출력하기 때문에 출력문 중간에 따옴표를 넣게 되면 거기서 출력 내용이 끝나는 것으로 인식되기 때문이다. 

이를 출력하고 싶은 경우에는 \' 또는 \" 처럼 따옴표 바로 앞에 백슬래시를 넣어주어야 한다.

마찬가지로, 만약 백슬래시 자체를 출력하고 싶다면 \\로 백슬래시를 두 번 입력해야 한다.



이처럼 자바에서는 출력문에서 백슬래시가 등장하는 순간 그 바로 다음 문자를 인식해 상황에 맞게 처리하는데, 이를 이스케이프 시퀀스(Escape Sequence)라고 한다.

이스케이프 시퀀스에는 몇 가지 특수한 경우가 지정되어있고, 지정된 문자가 아닐 경우 에러가 표시된다.

그 경우는 아래 표와 같다.

<특수문자 입출력표>

입력

출력

\

에러

\\

\

\'

'

\"

"

(

(

\(

에러

/

/

\/

에러

* 주의 : 괄호나 일반 슬래시는 \를 붙이지 않아도 된다.

입력

출력

\n

줄바꿈 (라인 피드)

\r

줄의 맨 처음으로 (캐리지 리턴)

\t

\b

커서를 한 문자 앞으로 (백스페이스)

\0

빈 칸(null)

 

코드 예시

코드

출력 결과

System.out.println("aaa\0bbb\rc");

caa bbb

\r 이전까지는 aaa bbb가 출력되다가, \r로 인해 커서가 줄의 맨 처음으로 돌아가고, 맨 앞의 a 위에 c가 덮어씌워져 caa bbb가 출력된다.

 

 

<백준 10171번 고양이 정답 코드>

입력

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

출력

\    /\
 )  ( ')
(  /  )
 \(__)|

 

 

<백준 10172번 개 정답 코드>

입력

class Main{
    public static void main(String[] args){
        System.out.println("|\\_/|\n|q p|   /}\n( 0 )\"\"\"\\\n|\"^\"`    |\n||_/=\\\\__|");
    }
}

출력

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|