#1012 유기농 배추

Sieun·2023년 1월 26일
2

알고리즘(solved.ac)

목록 보기
4/6
post-thumbnail

#1012 유기농 배추 문제로 이동

이 문제는 전형적인 bfs 문제이며, #1012 단지번호붙이기와 같은 문제라고 할 수 있다. 문제 난이도는 높지 않았지만, 이 문제를 풀면서 입력 방식에 따라 실행 속도 차이가 많이 크다는 것을 다시 한 번 느꼈다.

파이썬에서 사용자 입력을 받는 방식은 크게 2가지로 나뉜다.
1. input()
2. sys.stdin.readline()

input()보다 sys.stdin.readline()이 훨씬 실행속도가 빠르다는 것은 알고 있었지만, 그 이유에 대해서는 알지 못했다. 실행속도 차이에 영향을 미치는 이유는 크게 2가지가 있다.

[1]
input() 내장 함수는 parameter로 prompt message를 받을 수 있다. 따라서 입력받기 전 prompt message를 출력해야 한다. 물론 prompt message가 없는 경우도 있지만, 이 경우도 약간의 부하로 작용할 수 있다. 하지만, sys.stdin.readline()은 prompt message를 인수로 받지 않는다.

  • prompt message란?
    사용자에게 입력받을 때 출력하는 안내 문구 또는 질문
    예시) "숫자를 입력하세요", "이름을 입력하세요" 등
    in_ = input("prompt message 를 입력해주세요: ") print(in_)

[2]
input() 내장 함수는 입력받은 값의 개행 문자를 삭제시켜서 리턴한다. 즉 입력받은 문자열에 rstrip() 함수를 적용시켜서 리턴한다. 반면에 sys.stdin.readline()은 개행 문자를 포함한 값을 리턴한다.


문제로 돌아와서, 나는 input()이 더 간편하기도 하고 손에 익어서 먼저 input()을 사용해서 문제를 풀고, 실행 시간 차이를 확인하고자 sys.stdin.readline()으로 문제를 다시 한 번 풀어보았다. 각각의 실행 시간은 다음과 같다.

input() 사용 시 332ms 소요되었으며, sys.stdin.readline() 사용 시 68ms 소요되었다. 약 5배 가량 실행속도가 차이남을 확인할 수 있었다.


참고문헌
https://yeomss.tistory.com/120
https://buyandpray.tistory.com/7

profile
AI/ML 공부중👩🏻‍💻

0개의 댓글