본문 바로가기
I can do it on my own!/백준

[백준] 11718번 파이썬(Python)

by zivvon 2023. 5. 23.
목차 접기

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

입력

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

출력

입력받은 그대로 출력한다.


'문제 의도'

문자열을 올바르게 입력받고 파일의 끝(EOF)을 올바르게 판단할 수 있는 있는가

즉, 더 이상 읽을 게 없을 때 프로그램을 종료하는 법을 알아야 한다.

 

'정답 코드'

1) try-except 구문 사용

while True:
    try:
        print(input())
    except EOFError:
        break

 

2) sys.stdin.readlines() 메소드 사용

import sys
s = sys.stdin.readlines()

for i in s:
    print(i.rstrip())

 

3) sys.stdin.read() 메소드 사용

import sys

print(sys.stdin.read())

 

'공부한 것'

- EOF(End Of File) : 문자의 끝을 의미

~> 사용자가 입력을 마칠 경우 EOF가 인식되며, EOFError는 EOF가 입력될 경우 나타나는 에러

 

⭐⭐⭐

Hmm.. Q. try - except 예외처리 구문 vs sys.stdin.readlines()?

A) input()은 EOFError를 발생시키기 때문에, except 구문을 통한 예외처리로 정상적인 프로세스 종료가 가능,

반면 sys.stdin.readlines()은 빈문자열을 반환함으로써 입력 초과를 만들어냄

 

- try-except 구문 : 에러가 발생하는 상황에서 예외 처리할 수 있는 구문

try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
    (필요에 따라 except 절을 추가로 작성)

~> 예외 케이스

  • ZeroDivisionError : 값을 0으로 나누려고 할 때 발생하는 에러
  • SystemExit : 프로그램 종료하는 명령이 실행되었을 경우
  • KeyboardInterrupt : Control + C 키가 입력되었을 경우
  • EOFError : 읽어들일 데이터가 없을 경우
  • IndexError : list 등에서 잘못된 인덱스로 접근할 경우
  • PermissionError : 명령을 실행할 권한이 없을 경우

- sys.system.readline() : 문자열 형태로 개행문자를 포함한 한 줄만 입력됨.

- sys.system.readlines() : 파일의 끝까지 한번에 읽어옴. 각 줄이 개행문자가 포함되어 리스트로 저장됨.

- sys.system.read() : 파일의 끝까지 한번에 읽어오고 읽은대로 출력.

- sys.stdin.read().splitlines() : 파일의 끝까지 한번에 읽어오고 개행문자를 제외해 리스트로 읽음.

 

- lstrip() : 문자열의 왼쪽 공백이나 인자가 된 문자열의 모든 조합을 제거

ex) 'apple'.lstrip('p')의 output은 'ale'

- rstrip() : 문자열의 오른쪽 공백이나 인자가 된 문자열의 모든 조합을 제거

- strip() : 양쪽 문자열의 공백이나 인자가 된 문자열의 보든 조합을 제거