728x90
📌 문제
11718번: 그대로 출력하기
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시
www.acmicpc.net
📌 처음 코드
# 11718 그대로 출력하기
import sys
input = sys.stdin.readline
a = list(map(str, input().split()))
print(*a)
💡 풀이
- 여러 문자를 리스트 형태로 입력 받는다.
- 리스트 내 요소 전체를 출력하는 *를 활용해 리스트 전체를 출력해준다.
막연하게 생각하고 간단하게 코드를 짰는데, 코드상의 오류는 없었으나, 출력이 예제 문자열 중 하나 밖에 출력되지 않으면서 틀렸다고 했다. 입력값을 변형 없이 오롯이 그대로 출력하는 게 이 문제의 핵심인데, 해당 방법 외에는 어떤 식으로 문자열을 그대로 출력할 수 있을지 이해가 잘 되지 않았다.
그래서 어제, 오늘 고민해본 끝에 다른 블로그를 참조해보기로 했다.
📌 수정 후 코드
# 11718 그대로 출력하기
import sys
input = sys.stdin.readline
# 반복문을 통해 입력받는 값들은 모두 출력
while True:
try:
print(input())
# EOFError : End Of File -> 입력 값의 끝 글자
# 문자의 끝 글자를 확인 후 break를 걸어 반복문 종료
except EOFError:
break
💡 풀이
이 문제는
- 반목문을 통해 try, except 구문을 돌리면서 입력 값을 그대로 출력시키고,
- EOFError : End Of File 를 통해 문자의 끝글자를 확인 후 반복문을 종료시키도록 해야 했다.
참조한 블로그를 바탕으로 해당 구문을 사용해 제출했는데, 출력 초과로 실패했다.
왜 출력 초과였던 건가 고민하던 찰나, 지난 문제에서 sys모듈을 import 시켰던 것 때문에 코드는 맞음에도 불구하고 오답처리 됐던 게 생각나 import sys를 제거한 후 다시 제출해봤다.
📌 최종 코드
# 11718 그대로 출력하기
# 반복문을 통해 입력받는 값들은 모두 출력
while True:
try:
print(input())
# EOFError : End Of File -> 입력 값의 끝 글자
# 문자의 끝 글자를 확인 후 break를 걸어 반복문 종료
except EOFError:
break
예상했던 대로 import sys 구문을 제거한 뒤 다시 제출하니 정답처리 됐다.
아무래도 해당 구문은 입력 시간을 단축시켜주는 용도이긴 하지만 문자를 입력받을 때 자동 개행처리를 하고, 개행처리를 해결해주지 않으면 반복문에서 처리 시간이 늦어져 출력시간이 늦어지는 거 같다.
📌 정리
try-except : 예외처리 시 사용하는 구문
- 예외처리 : 예상치 못한 (개발자가 의도하지 않은 경우) 결과가 발생했을 경우 별도로 처리하는 방법
EOF (End Of File) : 문자의 끝 글자
적극적인 피드백은 언제나 환영입니다:)