https://www.acmicpc.net/problem/25083
해당 문제는 새싹 모양을 특수문자, 알파벳, 이스케이프 문자등을 통해 출력하는 문제이다.
기본 힌트는 아래와 같다.
- 역슬래쉬 출력 : "\\" 역슬래쉬를 한번 더 넣으면 된다.
- 따옴표 출력 : \" 따옴표 앞에 '\'를 넣어주면 된다.
엄청 간단한 문제같은데,, 계속해서 틀렸다고 한다..
#include <iostream>
using namespace std;
int main() {
cout << " ,r'\"7\"" << endl;
cout << "r`-_ ,' ,/" << endl;
cout << " \\. \". L_r'" << endl;
cout << " `~\\/" << endl;
cout <<" |" << endl;
cout <<" |" << endl;
return 0;
}
계속해서 틀렸다고 하길래, 문자열 변수를 하나 선언해 한번에 출력해야하는 걸까?하여 새롭게 코드를 짜보았다.
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = " ,r'\"7\"\n";
str += "r`-_ ,' ,/\n";
str += " \\. \". L_r'\n";
str += " `~\\/\n";
str += " |\n";
str += " |\n";
cout << str << "\n";
return 0;
}
또 틀렸다고 한다.. 대체 왜 그럴까 했는데 문제를 자세히 살펴보니 첫쨰줄 맨 끝에 "가 출력되어 있다.. 하..
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = " ,r'\"7\n";
str += "r`-_ ,' ,/\n";
str += " \\. \". L_r'\n";
str += " `~\\/\n";
str += " |\n";
str += " |\n";
cout << str << "\n";
return 0;
}
결과적으로 cout을 사용하거나 string 변수를 사용하는 방법의 문제는 아니었다. 단순하게 문제를 꼼꼼하게 확인하지 못한 것이었다.. 앞으로는 정말 문제를 꼼꼼하게 읽어야겠다..
그리고 endl 대신 \n을 사용하면 코드를 동작하는 실행시간이 줄어든다고 한다. endl 함수는 개행만 해주는 것이 아니라 내부버퍼를 비워주는 역할도 함께하기 때문에 \n비해 매우 느리다고 한다. 당신이 백준을 푼다면, 예외가 없는데 속도를 더 줄이고 싶다면, 자주 애용하도록 하자.