Algorithm

[Algo] 입력줄 개수를 모를 때

우주알 2023. 4. 15. 02:21

 

 

알고리즘 문제 풀다가 어렵지는 않은 문제인데, 입력줄이 몇 줄이 주어지는 지에 대한 정보를 안주는 문제를 만났다. (백준 11718 그대로 출력하기)

인풋이 몇 개일지 모르는 상황에 주어지는 인풋마다 아웃풋을 출력하라는데 어떻게 해야하지?

일단 이것저것 찍어보다가 이렇게 냈는데, 통과하긴 했지만 몇 가지 의문이 생겼던 게 있어서 정리.

 

import sys

a = sys.stdin.readlines()

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

입력을 통으로 읽어와서 반복문을 통해 하나씩 출력했다.

 

Q. strip()은 정확히 어떤 함수?

 

 

strip() 함수는 문자열에 사용하는 함수로, 시작과 끝의 공백을 제거해준다.

만약 괄호 안에 문자 매개변수를 넣으면, 시작과 끝에 해당 문자가 있다면 그 주어진 문자를 제거해준다.(시작과 끝에 해당 문자를 찾을 수 없다면 문자열을 있는 그대로 반환한다.

 

Q.공백을 제거해준다고 했는데 /n도 제거해주는 건가?

 

 

찾아보니까, 괄호 안에 아무것도 넣지 않았을 경우 즉, 삭제할 문자를 따로 지정하지 않으면 모든 종류의 blank 문자를 삭제한다고 한다. 여기서 blank 문자는 스페이스, 탭, 뉴라인(개행문자) 등이 있다. 그러니까 개행 문자는 blank로 인식이 되어서 삭제가 된 것.

 

 

Q. sys 라이브러리 사용안하고 풀려면?

 

 

try except 구문을 이용한다.

# 내가 원래 생각했지만, 에러났던 코드

while True :
    print(input())

# 이렇게 되면, 반복문은 계속 도는데 input()이 없어서 EOF 에러가 난다. 그래서

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

# 이렇게 try,except 문을 사용해서 처리할 수 있다.

참고, EOF에러가 뭐더라?

End Of File 이라는 의미. 말 그대로 입력값이 없어지는 상황.