본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 20216번 Ducky Debugging

by 현장 2024. 9. 18.

-Code

from sys import stdin, stdout

while True:
    line = stdin.readline().rstrip()

    if line == "I quacked the code!":
        break
    try:
        print("*Nod*" if line[-1] == "." else "Quack!")
    except:
        pass

    stdout.flush()

시간 초과가 계속 떠서 찾아보니 stdout.flush를 사용하니 해결되었습니다.

 

✔️ sys.stdout.flush()

출력 버퍼 비우기로 해당 지점까지 출력 버퍼에 버퍼링된 모든 데이터를 파일 객체에 푸시합니다.

출력 함수(print 등)를 통해 데이터를 출력하는 경우 데이터의 내용이 즉시 출력되는 것이 아닌 출력 버퍼에 저장되었다가 출력하는데  sys.stdout.flush()를 통해 버퍼링된 모든 데이터를 바로 출력을 하게됩니다.

 

버퍼(buffer) : 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역
버퍼링(buffering) : 버퍼에 데이터를 채우는 과정

📖 Reference

생각을코딩하다