Algorithm/Beakjoon

[Python] 백준 11718번_그대로 출력하기

mopipi 2022. 8. 1. 02:02
반응형

문제 

https://www.acmicpc.net/problem/11718

 

11718번: 그대로 출력하기

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

www.acmicpc.net

코드

import sys

for i in range(100):
    inputlist = str(sys.stdin.readline().strip()) #입력값 끝에 \n 제거
    if inputlist =="": #공백 입력됐을 경우 탈출 
        break
    print(inputlist)

 

풀이 

먼젓번에 풀었던 A+B-4문제와 동일하게 적용했다. readline으로 문자열을 읽어올 경우, 끝에 개행문자가 존재하는데, 이것을 제거하기 위한 메서드로 strip()을 사용해주었다.

최대 입력값이 100줄이기에 range(100)으로 설정 뒤 분기문을 통해 중간에 탈출하는 방식이다.

 

✔ input() 대신 readline()을 사용

 - input()을 통한 입력값 가공 시간 >>> readline()을 통한 입력값 가공 시간

 - readline()은 sys module의 sys.stdin로 사용 가능하다.

 - readline()은 입력 받은 값을 iterable container에 저장하는데(=> list), 이때 space("")와 개행문자(\n)까지 포함하여 저장

  ∴  문자열을 element로 저장하고 싶은 경우,  strip()으로 제거 개행문자를 제거해야 함

 

반응형

다른 풀이 

출처: https://www.acmicpc.net/source/17494637

import sys

v = sys.stdin.read()

print(v, end ='')

→ 마지막에 end=''로 다음줄 이동을 방지함으로써 마지막 출력 후 추가적 \n 없이 끝남

 

출력문 print의 옵션

  - end : 해당요소의 끝부분 설정 (개행요소)

     ex) end=" " : print문이 끝날 때 개행되는 것을 방지 (마지막 \n 삭제) 

  - sep : 구분자 (요소 사이 분리할 문자 입력)

     ex) sep=" ": 값들 사이 공백 제거해서 출력

 

출처: https://www.acmicpc.net/source/15955025

import sys
print(sys.stdin.read())

 

→ read()를 이용하면 별도의 for문 처리 없이 입력값 여러줄을 '문자열'로 받아올 수 있다. 이때, 어차피 문자열 끝에 개행문자가 붙어도 출력할 때 다시 붙여줘야 하므로(그대로 출력이니까...) strip()을 이용할 필요가 없다. 

 

여러 줄문자열로 입력받는 경우 : read() 사용 

 여러 줄 리스트로 입력받는 경우 : readlines() 사용 

 

  • read()와 readlines() 둘 다 계속되는 입력을 받으므로 break 처리가 필요한데, Ctrl + Z로 빠져나올 수 있다.
    • 하지만 없어도 정답처리되는걸 보면 문제 자체에서 거기까진 처리해주는 듯...
반응형