백준 알고리즘 10172번 : 개 (이스케이프 시퀀스 escape sequence)
이번 문제는 정말 기본적인 것을 모르면 풀 수 없는 문제였다. 이 문제는 그냥 보면 바로 풀 수 있다는 생각이 든다. 근데 정답률을 보면 39.9%정도 40프로가 안된느 것이다. 조금만 더 자세히 알고 있으면 좋았을 텐데 아쉽다는 생각이 들었다. 공부하면서 사소한 것이라고 넘어갔는데 앞으로는 그럴일이 없었으면 좋겠다.
문제 나간다.
개 실패
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 256 MB | 49604 | 17009 | 15586 | 38.218% |
문제
아래 예제와 같이 개를 출력하시오.
입력
없음.
출력
개를 출력한다.
|\_/| |q p| /} ( 0 )"""\ |"^"` | ||_/=\\__|
이렇게 생긴 귀여운 개를 보여줘야되는데 따옴표와 작은 따옴표, 그리고 백슬래쉬등 문자형 상수 escape sequence 를 모른다면 원하는 것처럼 나오지 않고 에러가 뜨는 대참사가 벌어진다. 일단 문자형 상수의 종류를 알아보자
(백슬래쉬는 한글 폰트에서 \으로 표현된다.)
문자 |
의미 |
'\b' |
백스페이스 |
'\t' |
탭 |
'\\' |
백슬래쉬 문자 |
'\'' |
작은 따옴표 |
'\"' |
큰 따옴표 |
'\n' |
개행 (줄바꿈) |
'\r' |
캐리지 리턴 |
여기서 백스페이스와 캐리지 리턴을 조금더 자세 히 설명한다면
백스페이스는 말그대로 문자 하나를 백스페이스를 눌러 지우는 효과와 같다
"AB" + '\b' + 'C' 는 AC가 되는것이다.
캐리지 리턴은 커서가 맨 앞으로 이동한다음 덮어 쓰는거라고 보면된다.
"AB" + '\r' + 'C' 는 CB가 되는것이다.
이렇게 해결이 된다! 그래서 결국 댕댕이를 출력하는 소스코드는
C++
#include <iostream>
using namespace std;
int main(){
cout << "|\\_/|" << endl;
cout << "|q p| /}" << endl;
cout << "( 0 )\"\"\"\\" << endl;
cout << "|\"^\"` |" << endl;
cout << "||_/=\\\\__|" << endl;
}
JAVA
class Dog
{
public static void main (String[] args)
{
System.out.println("|\\_/|");
System.out.println("|q p| /}");
System.out.println("( 0 )\"\"\"\\");
System.out.println("|\"^\"` |");
System.out.println("||_/=\\\\__|");
}
}
참고로 위의 소그코드에서 큰따옴표 대신 작으은 따옴표를 쓰게 된다면 수로다 변환되서 나오는데 왜그러는지는 아직 잘 모르겠다. 아무튼 큰 따옴표로!!
잘 보셨으면 공감 버튼 눌러주시면 감사하겠습니다!