Leetcode#1_02w03 Code Review 결과 정리

솜씨좋은장씨

·

2020. 2. 22. 18:02

1. Reverse Integer

- 제곱을 만드는 함수 : pow

   사용 예시 ) 2^31 => pow(2, 31) / -2^31 => pow(-2, 31)

 

추측 : pow가 ** 방식으로 제곱을 만드는 것 보다 빠를것 같다

 

테스트!

import time

pow_times = []
two_star_times = []

for i in range(10):
    startTime = time.time()
    nZegob = pow(i, 31)
    endTime = time.time() - startTime
    pow_times.append(endTime)
    
for i in range(10):
    startTime2 = time.time()
    nZegob2 = i ** 31
    endTime2 = time.time() - startTime2
    two_star_times.append(endTime2)
for i in range(10):
    if pow_times[i] > two_star_times[i]:
        print("False", pow_times[i], two_star_times[i])
    elif pow_times[i] == two_star_times[i]:
        print("Same", pow_times[i], two_star_times[i])
    else:
        print("True", pow_times[i], two_star_times[i])

결과 : 항상 그런 것 같지는 않으며 상황에 따라서 다른 것으로 보임.

 

2. Add Two Numbers

- string도 [::-1] 라고 하면 reversed라고 하지 않아도 가능

- Linked List 이해하기

  ( 이미지는 추후 KeyNote로 만들어서 올려볼게요오)

 

추측 : string[::-1] 방식으로 문자열을 뒤집는 것이 더 빠를 것이다.

 

테스트!

import time

two_semi_times = []
list_sorted_times = []

reversed_names_1 = []
reversed_names_2 = []

names = ["SOMJANG", "idEANS", "SolSol", "Magician", "dum_yroot", "ssom", "JiyoungPark", "HyeonaKim", "SolPark", "DongHyunJang"]

for i in range(10):
    startTime = time.time()
    reversedName = names[i][::-1]
    reversed_names_1.append(reversedName)
    endTime = time.time() - startTime
    two_semi_times.append(endTime)
    
for i in range(10):
    startTime2 = time.time()
    reversedName2 = reversed(list(names[i]))
    reversed_names_2.append(reversedName2)
    endTime2 = time.time() - startTime2
    list_sorted_times.append(endTime2)
for i in range(10):
    if two_semi_times[i] > list_sorted_times[i]:
        print("False", two_semi_times[i], list_sorted_times[i])
    elif two_semi_times[i] == list_sorted_times[i]:
        print("Same", two_semi_times[i], list_sorted_times[i])
    else:
        print("True", two_semi_times[i], list_sorted_times[i])

결과 : 대부분 [::-1] 방식이 빨라보이지만 소수점 6개 아래에서 차이나는 것으로 보아 큰 차이는 없는 것으로 보임.

 

- 자료구조에 대한 이해도 필요함 -> linked list, stack, queue 등