코린이의 소소한 공부노트

[LeetCode/Easy] 933. Number of Recent Calls 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 933. Number of Recent Calls

무지맘 2023. 3. 31. 23:45

목표: 특정 시간 내에 요청된 횟수를 세는 RecentCounter클래스 구현

- 생성자

int ping(int t)

 

1. Input

- ping(): 새 요청이 들어온 시간

 

2. Output

- ping(): [t-3000, t] 시간 구간에 요청된 횟수를 반환

 

3. Constraint

1) 1 <= t <= 10^9

2) ping()이 호출될 때마다 t는 점점 증가한다.

3) ping()은 최대 10^4번 호출 될 수 있다.

 

4. Example

RecentCounter recentCounter = new RecentCounter(); // 객체 생성
recentCounter.ping(1);    // requests = [1],                  시간범위: [-2999,1],   1 반환
recentCounter.ping(100);  // requests = [1, 100],             시간범위: [-2900,100], 2 반환
recentCounter.ping(3001); // requests = [1, 100, 3001],       시간범위: [1,3001],    3 반환
recentCounter.ping(3002); // requests = [1, 100, 3001, 3002], 시간범위: [2,3002],    3 반환

 

5. Code

1) 첫 코드(2023/03/31)

class RecentCounter {
    ArrayList<Integer> requests;
    
    public RecentCounter() {
        requests = new ArrayList<>();
    }
    
    public int ping(int t) {
        requests.add(t);
        int answer = 1;
        for(int i=requests.size()-2 ; i>=0 ; i--){
            if(requests.get(i)>=t-3000)
                answer++;
            else
                break;
        }
        return answer;
    }
}