정글에서 온 개발자

1/2 TIL (짧음) sliding 윈도우 주의, .count()로 키 찾지 말기 본문

TIL

1/2 TIL (짧음) sliding 윈도우 주의, .count()로 키 찾지 말기

dev-diver 2025. 1. 2. 23:35

sliding window

다음 코드는 멋있긴 하지만 겁나 느리다.

int tribonacci(int n) {
    array<int, 3> arr = {0,1,1};

    for(int i=3; i<=n; i++){
        arr[i%3] = arr[(i-1)%3] + arr[(i-2)%3] + arr[(i-3)%3];
    }

    return arr[n%3];
}

아래 코드처럼 대입 저글링을 하는 게 더 빠르다.

int tribonacci(int n) {

    array<int,3> arr = {0,1,1};

    for(int i=3; i<=n; i++){
        int temp = arr[0] + arr[1] + arr[2];
        arr[0] = arr[1];
        arr[1] = arr[2];
        arr[2] = temp;
    }

    if (n==0) {
        return arr[0];
    } else if(n==1) {
        return arr[1];
    }

    return arr[2];
}

아니면 차라리 array 대신 a,b,c 변수를 선언해놓고 저글링 하는 것도 괜찮다.

map에서 count로 키 여부 확인하면

느리다.
.find() 는 찾으면 바로 반환하는 반면,  .count() 는 map의 특성상 key가 하나임에도 불구하고 템플릿 메소드로써 모든 값을 찾는 추가 로직이 들어갈 수 있기 때문에 느리다.

'TIL' 카테고리의 다른 글

1/4 TIL 목과 테스트 취약성  (1) 2025.01.05
1/3 TIL interval관련 알고리즘, c++ sort 팁  (0) 2025.01.03
1/1 오픈소스, C++  (0) 2025.01.01
12/31 TIL C++ 소소한 배움  (0) 2024.12.31
12/30 TIL C++ 알고리즘을 위한 STL 소소팁  (0) 2024.12.30