백준 - 단계별로 풀어보기 [10172] 개
https://www.acmicpc.net/problem/10172
문제
아래 예제와 같이 개를 출력하시오.
|\_/|
|q p| /}
( 0 )"""\
|"^"` | |
|_/=\\__|
풀이
본 문제는 탈출 문자 개념을 아는가, 그리고 \, " 등의 문자들을 정상적으로 출력할 수 있는가를 물어보는 문제이다.
초보자들이 자주 할 수 있는 실수가 바로 탈출 문자를 고려하지 않는것이다.
예를 들어 printf(""Hello"");의 경우 Hello이전에 이미 따옴표가 2개가 나왔기 때문에 printf(" "Hello " " );로 인식되어 따옴표 뒤에 printf문을 닫는 괄호가 없다는 컴파일 에러를 발생시키게 된다.
이처럼 \, " 는 탈출(Escape) 문자를 표현할 때 사용되기 때문에 컴파일러에게 혼동을 줄 수 있다.
따라서 printf 문의 " " 사이에 해당 문자들을 출력하려면 단순 출력용이라는것을 명시하기 위해 \를 추가하기로 약속되어있다.
아래의 표는 printf문에서 사용될 수 있는 다양한 탈출 문자열들이다. 아마 대부분의 사람들이 \n에는 상당히 익숙하겠지만, 다른 탈출 문자열들은 다소 생소하게 느껴질 것이다. (사실 그만큼 쓰임새가 없긴 하다.)
위의 표에 따라서,
\ -> \\
" -> \"
위와 같이 코드를 출력문을 작성하면 정상 출력이 가능하게 된다.
코드
#include <cstdio>
int main() {
printf("|\\_/|\n");
printf("|q p| /}\n");
printf("( 0 )\"\"\"\\\n");
printf("|\"^\"` |\n");
printf("||_/=\\\\__|\n");
return 0;
}
평가
전공자들에게는 C언어 과목을 배우면서 여러번 배웠을 내용이지만, 의외로 기초적인 내용을 잊어버리는 경우도 많은 것 같다.
전공자인 본인 또한 마찬가지로 문제를 보고 "아~ 이거 알지!" 해놓고 정작 풀이하는데는 굉장히 혼란스러웠었다.
실제로 해당문제의 정답비율은 38%로 매우 낮은 정답률을 기록하고 있다.
대부분 풀 수 있지만 귀찮아서 넘어가는 경우가 많았을 것이지만, 그래도 기초부터 탄탄히 하자는 의미에서 포스팅을 진행하였다.
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 1018번 체스판 다시 칠하기 C++ 풀이 (1) | 2020.02.06 |
---|---|
[백준 / BOJ] - 1157번 단어 공부 C++ 풀이 (0) | 2020.02.03 |
[백준 / BOJ] - 10809번 알파벳 찾기 C++ 풀이 (0) | 2020.01.30 |
[백준 / BOJ] - 4344번 평균은 넘겠지 C++ 풀이 (0) | 2020.01.29 |
[백준 / BOJ] - 10951번 A+B-4 C++ 풀이 (0) | 2020.01.28 |