20240110 백준 1259, 10789
sys.stdin.readline()
빠른 입력을 위해 사용하는 sys.stdin.readline().
이 코드는 입력받은 한 줄을 개행(줄바꿈)문자와 함께 저장한다.
그래서 sys.stdin.readline()을 이용해서 한 줄의 값을 한번에 저장하고 입력받은 값의 길이를 살펴보면, 길이가 input()으로 입력받았을 때의 길이보다 1만큼 더 큰것을 알 수 있다.
길이 뿐만이 아니라 만약 0을 입력하면 프로그램을 종료하기 위해 입력받은 값을 0과 비교하는 코드를 작성해보면 sys.stdin.readline()을 사용했을 때는 0을 입력해도 개행(줄바꿈)문자로 인해 false가 나오게 된다.
import sys
while True:
X = sys.stdin.readline()
if X == '0':
break
else:
print(len(X))
## 입력
# 0
## 출력
# 2
import sys
while True:
X = sys.stdin.readline()
if X == '0\n':
break
else:
print(len(X))
## 입력
# 0
위와 같이 그냥 ‘0’과 비교하면 false고, ‘0\n’과 비교해야 true인 것을 알 수 있다.
sys.stdin.readline() 줄바꿈문자 및 공백문자 없이 저장하는 방법
만약 맨왼쪽과 맨오른쪽의 개행(줄바꿈)문자(\n)와 공백문자(\t) 모두를 같이 저장하고 싶지 않다면 strip()을 사용해주는 방법이 있다.
sys.stdin.readline().strip()
strip()은 맨왼쪽과 맨오른쪽의 개행(줄바꿈)문자(\n)와 공백문자(\t)를 모두 없애준다.
import sys
X = sys.stdin.readline()
Y = sys.stdin.readline().strip()
print(len(X))
print(X)
print(len(Y))
print(Y)
print(X)
## 입력
# hi i like pink
# hi i like pink
## 출력
# 18 ------------------- (1)
# hi i like pink
#
# 14 ------------------- (2)
# hi i like pink
# hi i like pink
# ---- (3)
(1) 왼쪽 공백 3 + 문자열 길이 14 + 오른쪽 개행문자 1 해서 길이 18이 출력됨.
(2) 맨왼쪽, 맨오른쪽의 개행문자와 공백문자는 모두 제거하고 문자열의 길이 14만 출력됨.
(3) Y의 경우에는 strip()을 사용하여 오른쪽의 개행문자를 제거하고 저장했기 때문에 출력시에 줄바꿈이 한번만 되지만, X의 경우에는 \n을 함께 저장하기 때문에 \n이 두개로 인식되어 출력시에 줄바꿈이 한번 더 이루어지는 것을 볼 수 있음.
sys.stdin.readline().strip(‘\n’)
개행(줄바꿈)문자(\n)만 제거하고 싶다면 괄호안에 ‘\n’을 적어준다.
import sys
X = sys.stdin.readline().strip('\n')
print(len(X))
print(X)
## 입력
# hi i like pink
## 출력
# 17 ------------------- (1)
# hi i like pink ---- (2)
(1) 왼쪽 공백 3 + 문자열 길이 1 해서 길이 17이 출력됨.
(2) 줄바꿈 제거 했기 때문에 밑에 빈 줄 출력 없이 그냥 종료됨.
sys.stdin.readline().rstrip()
rstrip()은 맨오른쪽의 개행문자나 공백문자를 모두 제거함.
sys.stdin.readline().rstrip(‘\n’)
맨오른쪽의 개행문자만 제거함.
문자열 n줄 입력받아 리스트에 저장하는 방법
import sys
n = int(sys.stdin.readline())
list = [sys.stdin.readline().strip() for i in range(n)]
print(list)
## 입력
# ABCDE
# abc
# 0123456
## 출력
# ['ABCDE', 'abc', '0123456']
Today : 백준 1259, 10789, 2163 문제 풀음.
Leave a comment