본문 바로가기
코딩 테스트/Python_백준

[백준/Python] 11718번 그대로 출력하기 문제

by 모두의 케빈 2023. 3. 24.

 

ㅁ 코드 풀이

 

두 가지 방법으로 풀어보겠습니다.

 

먼저 첫 번째 방법은 try, except 구문을 활용한 방법입니다. 제가 문제를 처음 봤을 때 '입력을 몇 번 받는지 제시하지 않았으니, break 조건이 핵심이겠구나' 라는 생각이 들었고, 이를 코드로 구현하기에 try, except가 딱이다 라는 생각을 했습니다. 아래의 코드는 "몇 번인지 모르겠지만 일단 계속 입력 받은 것을 출력하고(try) 입력이 종료되면 반복문을 break 해라" 라는 뜻입니다. 코드 길이는 90B이고 소요 시간은 72ms 입니다.

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

 

두 번째 방법은 sys.stdin의 readlines()를 활용한 방법입니다. readlines는 여러 입력을 한 번에 받아서 list로 return 해주는 메서드입니다. 각각의 문장의 마지막에는 개행문자('\n')가 함께 저장되므로 list에 접근하여 개별 원소를 출력할 때는 rstrip 메서드를 활용하여 개행 문자를 제거해줍니다.

아래와 같은 방법대로 하면, 입력이 종료되면 자동으로 words라는 list를 반환해주고 우리가 할 일은 그저 해당 list를 출력해주기만 하면 됩니다. 코드 길이는 85B이고 소요 시간은 40ms로 압도적으로 효율적입니다. 여러 줄을 입력 받을 때는 readlines() 방법을 잘 활용하는 것이 좋을 것 같습니다.

import sys

words = sys.stdin.readlines()
for word in words:
    print(word.rstrip())

 

댓글