잡다로그

[99클럽 코테 스터디] 24일차 TIL - 스택/큐, Number of Recent Calls 본문

Algorithm

[99클럽 코테 스터디] 24일차 TIL - 스택/큐, Number of Recent Calls

날으는다람쥐 2024. 6. 24. 09:53

[24일차] 스택/큐

문제: https://leetcode.com/problems/number-of-recent-calls/description/

* 번역: 여기 RecentCounter 클래스가 있다. 이 클래스는 특정 시간 프레임 내에서 최근 요청의 수를 세는 기능을 제공한다. 클래스를 정의하여라.

  • RecentCounter(): 초기화 메서드. 최근 요청 수를 0으로 초기화한다.
  • int ping(int t): 시간 t에서의 새로운 요청을 추가하고, [t - 3000, t] 시간 범위 내의 요청 수를 반환힌다. 즉, 최근 3000 밀리초 동안 발생한 요청 수를 반환한다. 반환된 요청 수에는 새로 추가된 요청도 포함된다.

이전 호출보다 엄격히 큰 시간 t를 사용하도록 보장된다.

Solution

class RecentCounter:

    def __init__(self):
        self.r = []
        

    def ping(self, t: int) -> int:
        ans = 0

        self.r.append(t)
        
        start = t-3000
        end = t

        for i in self.r:
            if start <= i <= end:
                ans += 1
        
        return ans

나다어

나는 다음에 어떻게 풀까

  • 클래스 멤버 변수 선언 시에도 self를 붙여주어야 한다.
  • 범위를 비교할 때는 in 이 아니라 부등호를 사용하면 된다!

오답노트. 두 번째 나다어 포인트. 범위 비교를 잘못 접근해서 시간초과 판정을 받았다.

class RecentCounter:

    def __init__(self):
        self.r = []
        

    def ping(self, t: int) -> int:
        ans = 0

        self.r.append(t)
        
        start = t-3000
        end = t

        for i in self.r:
            if i in range(start, end+1):
                ans += 1
        
        return ans

여기서 range()를 쓸 것이 아니라 간단하게 if start <= i <= end 를 써주면 될 일.

 

Comments