[백준] 10172번 : 개 - [C++]
-
문제
이전의 고양이 문제와 같이 이스케이프 시퀀스에 대한 이해를 필요로 하는 문제다.
- 알고리즘 [접근 방법]
이 문제도 이스케이프 시퀀스를 알고 있어야한다.
이전 문제인 고양이에서는 백슬래시(\)에 대한 것 밖에 나오지 않았지만, 이 번 문제는 조금 더 많다. 대표적인 이스케이프 시퀀스들은 다음과 같다.
보다시피 큰따옴표("), 작은따옴표('), 역슬래시(\) 는 특정 기능을 수행하게 해주는 문자이기 때문에 단독으로 출력하려면 역슬래시 + 출력할 문자 조합을 통해 출력해야 한다.
보통 보면 큰 따옴표(") 는 문자열로 인식하도록 해주는 기능을 갖고있고, 작은 따옴표(') 는 문자로 인식하도록 해준다. 역슬래시(\)는 그 자체와 특정 문자를 붙여 공백, 줄바꿈 등을 해줄 수 있게 만들어지는 기능이다.
즉, 위와같이 어떤 특정 기능을 수행하기 위한 문자들은 그 형상 자체로 출력이 불가능하기 때문에 출력할 수 있도록 따옴표, 역슬래시 등을 이스케이프 시퀀스로 만들어 사용하는 것이다.
그리고 주의해야 할 점이 출력해야 할 개의 문자를 보면 ` 문자가 있다. 이는 작은따옴표가 아니다.
` 문자는 억음부호(grave accent)라고 해서 프랑스어 같은 곳에서 많이 봤었을 것이다. à, e, ù 문자에 보통 붙어있는데 의미상의 구분 또는 발음 구분을 하기위해 붙어있다고 한다. (필자도 불어는 잘 몰라서..)
보통은 esc 버튼 아래 또는 tap 키 위에 붙어있으며, 맥의 경우 option + e 를 누르면 된다.
그러면 한 번 수정과정을 보자.
출력하고자 하는 것은 아래와 같다.
|\_/|
|q p| /}
( 0 )"""\
|"^"` |
||_/=\\__|
그럼 역슬래시와 큰따옴표 앞에 각각 역슬래시를 붙여주어야 하니 위를 수정해보면 이렇다.
|\\_/|
|q p| /}
( 0 )\"\"\"\\
|\"^\"` |
||_/=\\\\__|
그리고 마지막으로 줄 바꿈을 해주어야하니 각 줄의 마지막에 \n 으로 개행문자를 넣어준다. 즉, 최종적으로 한 줄당 출력해야 하는 문자열은 아래와 같다.
|\\_/|\n
|q p| /}\n
( 0 )\"\"\"\\\n
|\"^\"` |\n
||_/=\\\\__|\n
- 2가지 방법을 사용하여 풀이한다.
이전 포스팅과 여타 다를 바 없이 아래와 같이 stdio 를 이용한 방법과 iostream을 쓰는 방법을 통해 풀이하겠다.
1. stdio
2. iostream
- 풀이
- 방법 1 : [stdio]
#include <stdio.h>
int main(int argc, char const *argv[]) {
printf("|\\_/|\n");
printf("|q p| /}\n");
printf("( 0 )\"\"\"\\\n");
printf("|\"^\"` |\n");
printf("||_/=\\\\__|\n");
return 0;
}
가장 기본적인 방법이라 할 수 있겠다.
- 방법 2 : [iostream]
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
cout << "|\\_/|\n";
cout << "|q p| /}\n";
cout << "( 0 )\"\"\"\\\n";
cout << "|\"^\"` |\n";
cout << "||_/=\\\\__|\n";
return 0;
}
- 성능
채점 번호 : 26105082 - 방법 2 : iostream
채점 번호 : 26105079 - 방법 1 : stdio
- 정리
어려운 부분은 없었을 것이다. 특히 IDE를 사용하여 풀이할 경우 타이핑 과정에서 대부분 문법 오류를 잡아주기 때문에 어렵지 않게 풀 수 있다.
'C++ - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글
[백준] 10998번 : A×B - [C++] (0) | 2021.02.13 |
---|---|
[백준] 1001번 : A-B - [C++] (0) | 2021.02.10 |
[백준] 1000번 : A+B - [C++] (0) | 2021.02.08 |
[백준] 10171번 : 고양이 - [C++] (4) | 2021.02.05 |
[백준] 2557번 : Hello World - [C++] (0) | 2021.02.02 |