try except를 쓰면 느릴까

LiiNi·2024년 2월 3일

문제제기

[상황]빈리스트부터 시작해 리스트의 맨 마지막을 참고하고 조건이 맞으면 리스트에 append하는 로직을 짤때
[문제]맨 처음에 빈리스트인데 [-1]로 참조하면 에러나니까, for문에
1. if len(arr) == 0를 추가할까
2. try: except문으로 에러를 처리할까
이 둘중에 뭐가더 빠를까?

코테문제

같은 숫자는 싫어

1번 if문 추가 코드

def solution(arr):
    answer = [arr[0]]
    for iv in arr:
        if len(arr) == 0:
            answer.append(iv)
            continue
        if answer[-1] != iv:
            answer.append(iv)
    return answer

2번 try except문 추가 코드

def solution(arr):
    answer = [arr[0]]
    for iv in arr:
        try:
            if answer[-1] != iv:
                answer.append(iv)
        except:
            answer.append(iv)
            
    return answer

실행시간 비교


결론

try문이 if문보다 빠르다!(단, indexError시에만)

하지만, 이는 index Error에만 검증된것이다. 만약 오류가 나기까지 엄청나게 많은 스택콜을 가진 함수를 쓴다면? if가 더 빠를 것이다.
그러니까 앞으로 코테에서 index참조를 굳이 if문으로 빼지말고 try except를 이용해서 모든케이스가 되도록 범용적으로 설계하자.

profile
보안을 겸비하고픈 풀스택개발자

0개의 댓글