728x90
1. 문제
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
'Algorithm' 카테고리의 다른 글
| 1137. N-th Tribonacci Number (0) | 2025.04.28 |
|---|---|
| [Algorithm] JAVA 정렬 알고리즘 - 삽입정렬(Insertion Sort) (0) | 2023.02.20 |
| [Algorithm] JAVA 정렬 알고리즘 - 선택정렬(Selection Sort) (0) | 2023.02.16 |
| [Algorithm] JAVA 정렬 알고리즘 - 버블정렬(Bubble Sort) (0) | 2023.02.08 |
| [Algorithm] JAVA 소수판별 - 에라토스테네스의 체 (2) | 2023.02.06 |