반응형

 


백준 - 단계별로 풀어보기 [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%로 매우 낮은 정답률을 기록하고 있다. 

대부분 풀 수 있지만 귀찮아서 넘어가는 경우가 많았을 것이지만, 그래도 기초부터 탄탄히 하자는 의미에서 포스팅을 진행하였다.

 

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,