Algorithm

[Dart] 933. Number of Recent Calls

Meezzi 2025. 4. 24. 09:47
728x90

1. 문제

https://leetcode.com/problems/number-of-recent-calls/description/?envType=study-plan-v2&envId=leetcode-75

 

 

 

2. 요구사항

1) RecentCounter 클래스는 주어진 시간 범위 내에서 호출 수를 기록하고 반환한다.

2) RecentCounter()는 RecentCounter 객체를 초기화한다.

3) int Ping(int t)는 시간 t에 요청이 발생했다고 기록한다.

4) 현재 시점(t)에서 과거 3000밀리초 이내에 발생한 요청의 수를 반환한다.

 

 

 

3. 코드

import 'dart:collection';

class RecentCounter {
  final Queue<int> queue = Queue();

  RecentCounter();

  /// 3000밀리초 내의 호출만 유지하며, 각 호출 범위 내의 호출 수를 반환
  int ping(int t) {
    // 1. 호출한 시점의 시간 t를 차곡차곡 쌓아둘 Queue 만들기
    queue.addLast(t);

    // 2. Queue에서 가장 오래된 것부터 꺼내서 3초 이내의 시간이 아니라면 제거
    while (queue.isNotEmpty && queue.first < t - 3000) {
      queue.removeFirst();
    }

    // 3. Queue 안에 쌓인 시간들의 개수 반환
    return queue.length;
  }
}


/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter obj = RecentCounter();
 * int param1 = obj.ping(t);
 */

 

728x90