-
[파이썬/Python] 백준 10172번(개) - 단계별로 풀어보기깜빡의 취미/파이썬을 합니다. 2021. 6. 14. 00:42728x90
문제는 아래와 같다
10171번(고양이)의 업그레이드 버전이다. 기존 '단계별로 풀어보기'를 따라가고 있었다면 약간의 고민을 통해 문제를 충분히 풀 수 있다. 문제 풀이에 필요한 개념을 다시 한번 설명하고, 실제 답안 예시를 보여드리도록 하겠다.
역시 댕댕이가 최고다.
여기서 알아야 할 지식은 크게 두 가지다. 첫 번째는 따옴표의 사용이다. 출력해야 하는 문장 안에 인용문 등을 넣고 싶을 때, 큰따옴표(")로 시작한 문장 내에서는 작은따옴표(')를, 작은따옴표(')로 시작한 경우에는 큰따옴표(")를 이용해 문장을 구분해야 한다. 그렇지 않으면 컴퓨터는 이 일종의 안긴문장(?)이 시작되는 지점에서 문장이 끝났다고 인식하게 된다.
print("나는 '오늘 공부는 쉬어야겠다'고 다짐했다") print('오늘 읽기로 한 책은 "제1회 전주동네책방문학상 그럼에도 불구하고"이다.')
두 번째는 10171번에서도 다루었던 이스케이프 코드에 관하여 한 번 더 생각해 보아야 한다. 이스케이프 코드란 문장 내에 특정 문자 등을 표현하기 위한 약속이다. 한 예시로 만일 큰따옴표(")로 시작한 문장 내에 큰따옴표(")를 넣고 싶다면, \"을 입력하면 된다. 작은따옴표 또한 마찬가지이다. 문장 내에 백슬래시(\, 코딩 과정에서는 다르게 출력된다) 자체를 출력하기 위해서는 이스케이프 코드 '\\'을 사용하면 된다. 그렇다면 출력 값이 백슬래시 두 개(\\)가 되도록 하고 싶다면 어떻게 해야 할까?
각각의 \을 이스케이프 코드로 표현하여 '\\\\'를 입력해야 할 것 같지만, 그렇지 않다. 첫 \이 이스케이프 코드의 시작임을 알리는 것이고, 그 뒤의 \은 실제 출력될 백슬래시라고 이해하면 편하다. 즉 위의 그림 맨 아랫줄에 있는 백슬래시 두 개는 '\\\'를 입력하여 구현할 수 있다.
처음에 이걸 몰라서 에러가 떴던 기억이 뼈저립니다. 역시 인생은 실전이라고, 문제를 풀어봐야 는다는 생각을 이 때 했습니다.
여기까지 읽고 감이 온 분들이라면 이제 10172번으로 돌아가, 제출을 해보자.
혹시 아직 어떤 이야기인지 감이 오지 않는다면, 예시를 하나씩 보여드리고자 한다.
우선 가장 마음 편한 방법이다. 가장 적은 것을 고려하는 답안이지만, 가장 길기도 하다.
print("|\\_/|") print("|q p| /}") print("( 0 )\"\"\"\\") print("|\"^\"` |") print("||_/=\\\__|")
우리는 무언가 말하고 싶을 때 큰따옴표(")를 사용한다. 그런데 그림 안에 큰따옴표(")나 백슬래시(\)를 표현해야 하니, 이스케이프 코드를 활용해서 정리해 준다. 이 식을 아주 조금 간단하게 만드는 방법은, 작은따옴표를 사용하는 방법이다.
print('|\\_/|') print('|q p| /}') print('( 0 )"""\\') print('|"^"` |') print('||_/=\\\__|')
작은따옴표로 문장이 묶여 있기 때문에, 어차피 내부에 있는 큰따옴표는 글의 초반에 설명했던 것과 같이 잘 구분된다. 따라서 큰따옴표(")에 대해서는 이스케이프 코드를 활용하지 않아도 좋다.
이제 print를 여러 번 쓰기가 곤란하니, 3연속 따옴표를 사용해 보자. 자세한 내용은 10171(고양이) 해설 게시글을 참고하시길.
이미 차근차근 학습하고 있는 분들이라면 충분히 알 만한 내용이니, 바로 이를 활용한 예시를 보여드리겠다.
print('''|\\_/| |q p| /} ( 0 )"""\\ |"^"` | ||_/=\\\__|''')
굳이 큰따옴표를 활용해서 이스케이프 코드를 늘리지 않았다. 위의 예시와의 차이점은 그저 print를 여러 번 쓰지 않아도 좋다는 것이다. 그렇지만 이 작은 차이가 미래의 손가락을 지켜 준다.
여기서 줄바꿈 이스케이프 코드 '\n'까지 활용하면, 개라고 생각할 순 없지만 한 줄로 딱 떨어지는 코드를 얻게 된다.
print('|\\_/|\n|q p| /}\n( 0 )"""\\\n|"^"` |\n||_/=\\\__|')
솔직히 출력값만 고려한다면 나쁘지 않겠지만, 입력되는 값을 수정하기에는 참 불편하다.
마지막 복습이다. 10712(개) 문제는 따옴표의 사용과, 이스케이프 코드 두 가지를 이해하면 손쉽게 풀 수 있다. 두 개념은 나중에 코딩을 하는 기본처럼 사용되는 녀석들이니, 꼭 기억해 두자.
사람이 정신이 없으면 스스로 C++이라는 고등한 언어를 배우고 있다고 착각하게 된다. 파이썬은 좀 더 인간 친화적인 느낌이라 다행이다. 정말.
'깜빡의 취미 > 파이썬을 합니다.' 카테고리의 다른 글
[파이썬/Python] 백준 1000번(A+B) - 단계별로 풀어보기 (0) 2021.06.18 [파이썬 / Python] map(int, input().split())에 대해 (1) 2021.06.18 [파이썬/Python] 백준 10171번(고양이) - 단계별로 풀어보기 (0) 2021.06.06 [파이썬/Python] 백준 10718번(We love kriii) - 단계별로 풀어보기 (0) 2021.06.04 [파이썬/Python] 백준 2557번(Hello World) - 단계별로 풀어보기 (0) 2021.05.30