고양이 입력 문제를 풀어보자

10171번 고양이

위 문제는 단계별 문제 중 입력출력 문제에 해당하는 문제이다. 보통 쉽게 생각할 수 있지만, 나에게 puts를 사용하면 더 좋다는 것을 알려 준 문제이다.

현재 업무에서 C++을 언어를 주 언어로 하다보니, C++로 모든 것을 연습하고자한다. 따라서 이번 문제도 C++를 보고 풀었으나, 다른 사람들이 푼 소스코드를 보고 put의 정리의 필요성을 느껴 포스팅을 한다.

문제

고양이 문제는 주어진 출력을 하면 된다.

아래의 사진을 출력하면 되는 문제이다. 고양이 출력

문제 풀이

나는 C++을 이용해 고양이의 선을 어떻게 출력할지 고민하고 아래와 같이 풀었다.

int main()
{
  cout << "\\    /\\" << endl << " )  ( ')" << endl << "(  /  )" << endl << " \\(__)|";
}

여기서 중요한 포인트는 두가지이다.

다른 사람 풀이

다른 사람들의 풀이를 비교해 본 결과 (c++ 기준) cstdio 헤더 내 존재하는 puts를 이용해서 풀었다.

int main()
{
  puts("\\    /\\\n )  ( ')\n(  /  )\n \\(__)|");
}

위의 코드와 본인의 코드는 문법상 다른 것 말고 차이가 없다. 하지만 “문법”이 중요한 차이를 보여준다.

사용자가 보기에는 별 차이가 없어보이지만, 실제 내부적으로는 두 동작이 다르다. 나중에 메모리가 많아진 케이스에서는 c++ 객체로 이루어진 출력이 아닌 C 표준 입출력 (cstdio) 을 사용하는 것이 좋다.

Reference