ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬/Python] 백준 10171번(고양이) - 단계별로 풀어보기
    깜빡의 취미/파이썬을 합니다. 2021. 6. 6. 22:14
    728x90

    문제는 아래와 같다.

     

    10171번: 고양이

    아래 예제와 같이 고양이를 출력하시오.

    www.acmicpc.net

    10718번(we love kriii)을 이미 풀었다면 방심하기 쉽다. 3 연속 따옴표(""" or ''')를 이용하면 금방 풀 수 있을 거라고 생각하겠지만, 여기에는 함정이 숨겨져 있다. 우선 문제를 풀기 위해 꼭 알아야 할 개념을 알려드리고, 예시를 보여드리고자 한다.


    이번에도 이스케이프 코드에 대해 이해해야 한다. 이스케이프 코드는 간단히 말해 정해진 약속으로, 백슬래시(\기호가 코딩 과정에서는 백슬래시로 인식된다)로 시작하는 코드로 이루어져 있다. 그 중 이 문제에서 활용해야 할 이스케이프 코드는 \\이다.

     

    다시 말해 백슬래시 자체를 따옴표 내에서 표현할 방법을 알고 있어야 고양이를 출력할 수 있다. 방금 이 글을 읽은 당신은, 이제 문제를 풀 수 있게 되었다. 이제 예시 코드를 다시 살펴보자. 혹시 이 순간 실마리가 잡혔다면, 바로 백준으로 돌아가서 결과를 제출하자. 답은 당신의 편이다.

     

    10171번: 고양이

    아래 예제와 같이 고양이를 출력하시오.

    www.acmicpc.net


    아직 감이 오지 않은 분들을 위해 몇 가지 예시를 준비해 보았다. 먼저, 가장 정석적인 방법이다.

    print("""\\    /\\
     )  ( ')
    (  /  )
     \\(__)|""")

    이 방법을 통해 다음 그림과 같은 값을 출력하게 된다. 아까 본 것과 같은 그림이다.

    그림과의 정확한 비교를 위해 코딩 중 print 내부에 들어가는 그림만 꺼내 왔다.

    \\    /\\
     )  ( ')
    (  /  )
     \\(__)|

    군더더기처럼 붙은 백슬래시를 확인할 수 있다. 이렇게 이스케이프 코드로 처리해주고 나면, 10718번에서 사용했던 방법을 이용해 바로 문제를 풀 수 있다.

    ※ 10718번은 블로그 바로 이전 글에 있으니, 맨 아래 목록을 이용해 확인 가능하다.


    좀 더 궁금할 독자분들을 위해 한 가지 예시를 더 가져와 봤다. 바로 이스케이프 코드 두 개를 조합하는 방법이다.

    print("\\    /\\\n )  ( ')\n(  /  )\n \\(__)|")

    장점은 한 줄에 내용을 다 담을 수 있다는 점이다. 따라서 3 연속 따옴표(""" or ''')를 사용하지 않아도 문제를 풀이할 수 있고, 짧게 코딩을 압축할 수 있다. 단점은 출력값을 연상할 수 없다는 점이다. 조각난 닭강정을 보며 양계장 안의 치킨을 떠올릴 수 없는 것처럼, 저 한 줄의 코딩을 보면서 곧바로 고양이를 떠올릴 사람은 없을 것이다. 아마.

     

    이 방법을 사용할 때에는 두 번째 줄과 네 번째 줄의 공백을 임의로 조정해서는 안 된다는 것이 중요하다. 완전히 동일한 출력값을 요구하는 문제이기 때문에, 아주 사소한 띄어쓰기 문제로도 성패가 갈린다.  원래 파이썬이라는 게 tab처리 한 번 안 했다가 식 전체가 오류나는 말 같지도 않은 상황을 자주 선사하곤 한다. 참 싫다.


    끝으로 코딩 문제를 풀 때에는 아이디어를 잘 잡아야 한다는 이야기를 해보고 싶다. 물론 아는 것이 많아야 문제를 풀 방향도 보일 것이다. 수많은 시행착오가 우리를 기다리고 있다. 이 시행착오를 끈기 있게 하나씩 고쳐 나가면, 또 하나의 문제 풀이 아이디어를 얻게 될 것이다. 그리고 그것들이 모여 실력을 만들 것이라고 믿기 때문에, 오늘도 복습하고 또 도전한다.

    아이디는 부끄러운 마음에 항상 그림판에서 옮겨올 때 알아볼 수 없게 수정해둔다. 

    ※ 이런 시행착오를 치부라고 여기고 감추고 싶어 하는 과거의 필자같은 분들은, 자신감이 생길 때까지 '맞았을 때에만 공개' 처리를 해두자. 좀 더 자신 있게 결과를 질러볼 수 있다.

    댓글

Designed by Tistory.