[백준의 알고리즘] 10171번 고양이 문제 풀이 / 백 슬래시(\) 표시 방법

승제·2021년 5월 27일
0

알고리즘

목록 보기
1/2
post-thumbnail

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

입력 : 없음.

출력 : 고양이를 출력한다.

예제 입력 : 없음.

예제 출력

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

제출한 코드

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

풀이
JAVA에서는 백 슬래시(\) 문자는 이스케이프 문자로써 그 자체를 문자로 사용하기에는 제약이 있습니다

이스케이프 문자란?
컴퓨터와 주변 기기의 상태를 바꾸는 데에 쓰이는 일련의 문자열인 스케이프 시퀀스를 따르는 문자들로서 다음 문자가 특수 문자임을 알리는 백 슬래시(\)를 사용해줘야 한다

위 설명처럼 백슬래시는 이스케이프 문자로써 백 슬래시 자체를 문자로 사용할 경우 특수 문자임을 알리는 백 슬래시를 한번 더 붙여주면 된다 단! 정규식에서는 백 슬래시 한 개를 표현하기 위해 3개의 백 슬래시를 추가로 붙여줘야 한다

예제)

replace와 replaceAll 메서드를 사용한 문자 치환 코드

String escapeText = "coffee \\ tea";

System.out.println( escapeText.replace("\\", "or") );
system.out.println( escapeText.replaceAll("\\", "or") );

정규식을 테스트 하기 위해 위처럼 작성하고 컴파일하면 에러가 발생합니다

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
    at java.utill.regex.Pattern.error(Unknown Source)
    at java.utill.regex.Pattern.compile(Unknown Source)
    at java.utill.regex.Pattern.<init>(Unknown Source)    
    at java.utill.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at tistory.Example.main(Example.java:9)

이유는 replace는 문자열을 파라미터로 받지만, replaceAll은 정규식을 파라미터로 받는다 따라서 replaceAll("\\", "or")이 부분을 replaceAll("\\\\", "or")로 변경하면 정상적으로 출력된다

coffee or tea
coffee or tea
profile
nullnull한 개발자 입니다

0개의 댓글