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가 하나임에도 불구하고 템플릿 메소드로써 모든 값을 찾는 추가 로직이 들어갈 수 있기 때문에 느리다.