sys.stdin.readline()와 readlines()의 차이(feat.백준)

ossap·2021년 12월 7일
1

백준 10798번 문제를 풀다가 - 풀이 과정 포스트는 여기에
sys.stdin.readlines()로 여러 줄의 인풋을 받고 싶었는데, 계속 에러가 났다.

여러 방면으로 구글링하며 찾아보니 알게된 것은,

  • sys.stdin.readlines()는 ^z 혹은 컨트롤+z를 누르기 전까지 계속 입력을 받을 수 있다.
    그런데 백준에서는 5줄만 입력을 주고, 이후 컨트롤+z를 눌러주지 않기 때문에 저걸로 입력값을 받을 수 없는 것이다.

그래서 한줄씩 입력을 받는 sys.stdin.readline()을 for문을 돌리고 list에 append해서 한 리스트 안에 모을 수 있다.

+ readline()과 readlines()로 받았을 때는 \n 값이 포함되므로
(ex : ['문자\n','문자2\n']

strip()을 써서 공백을 제거해야 한다.

sys.stdin.readlines().strip()

예시는 아래 링크의 블로그에서 볼 수 있다.
최종적으로 도움받은 블로그1, 블로그2

profile
오삽 : 오늘도 삽질

1개의 댓글

comment-user-thumbnail
2023년 8월 20일

백준에서 readlines() 어떻게 사용하는지 몰라 헤맸는데 감사합니다 :)

답글 달기