[Python] 백준 10809번, 시간 제기

민지의 회고록·2023년 2월 8일
post-thumbnail

1. 시간 차이가 나서 비교해봄

  1. 모듈 사용 : 34804kb, 124ms
from string import ascii_lowercase

word = input()

ans = []

for i in ascii_lowercase:
    idx = word.find(i)
    print(idx, end=" ")
  1. 아스키코드로 소문자 만듬 : 31256kb, 44ms
word = input()
low_alpahbet = list(range(97,123))  # 아스키코드 숫자 범위

for x in low_alpahbet :
    print(word.find(chr(x))) 
  1. 첫 코드에서 모듈을 빼고 아스키코드로 소문자를 만들었을 때 : 31256kb, 40ms
word = input()

ans = []

low_alpahbet = list(range(97,123))

#for i in ascii_lowercase:
for i in low_alpahbet:
    idx = word.find(chr(i))
    print(idx, end=" ")

ascii_lowercase 모듈을 import 하여 소문자를 뽑았을때 시간이 늘어난 것을 볼 수 있다. 같은 코드에서 모듈을 빼고 아스키 코드로 소문자를 만들어 돌려보았을 때 감소하는 것을 알 수 있었다. 모듈을 사용하는 것보다 아스키 코드로 소문자를 만드는 것이 시간이 덜 드는 것을 알 수 있었다.

2. 시간을 직접 재보자

  • 어느 정도 시간이 걸린다는 것을 대략적으로 내 컴퓨터환경을 기준으로 알 수 있다.
  • time 모듈로 시간을 직접 재 보며 비교해보았다
  1. 모듈 선언, 아스키코드 사용 차이
import time

start_time = time.time()
from string import ascii_lowercase
end_time = time.time()
print("모듈 선언: ", end_time - start_time)

start_time = time.time()
low_alpahbet = list(range(97,123)
end_time = time.time()
print("아스키코드: ", end_time - start_time)

출력 :
모듈 선언: 0.022938251495361328
아스키코드: 0.0

  1. idx 까지 적어보자
import time

# 모듈 사용
start_time = time.time()
from string import ascii_lowercase
for i in ascii_lowercase:
     word = 'baekjoon'
     idx = word.find(i)
end_time = time.time()
print("모듈 선언: ", end_time - start_time)

# 아스키코드 사용
start_time = time.time()
low_alpahbet = list(range(97,123))
for i in low_alpahbet:
     word = 'baekjoon'
     idx = word.find(chr(i))
end_time = time.time()
print("아스키코드: ", end_time - start_time)

출력 :
모듈 선언: 0.02451920509338379
아스키코드: 0.0

  • 해당 조건들을 비교해 보았을 때 모듈 선언에 시간이 더 걸리는 것을 확인할 수 있었다.
profile
민지가 공부한 내용을 회고합니다~~

0개의 댓글