본문 바로가기
Language/Java

[LeetCode | Java | Queue 문제 풀이] 933. Number of Recent Calls - Solution with ArrayList & Stream API

by ㅇ달빛천사ㅇ 2024. 6. 23.
728x90

99 Club 2기 | Java | Beginner

🤙 Number of Recent Calls

🏷 관련 주제 : Design Queue Data Stream


Easy




Solution with ArrayList & Stream API

import java.util.ArrayList;

class RecentCounter {
    ArrayList<Integer> recentCounter;
    
    public RecentCounter() {
        recentCounter = new ArrayList<>();
    }
    
    public int ping(int t) {
        recentCounter.add(t);
        int answer = (int) recentCounter.stream().filter(i -> i >= t - 3000 && i <= t).count();

        return answer;
    }
}

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter obj = new RecentCounter();
 * int param_1 = obj.ping(t);
 */
채점 결과

Solution with ArrayList & Loop

import java.util.ArrayList;

class RecentCounter {
    ArrayList<Integer> recentCounter;
    
    public RecentCounter() {
        recentCounter = new ArrayList<>();
    }
    
    public int ping(int t) {
        int answer = 0;
        recentCounter.add(t);

        for (int p : recentCounter) {
            if (p >= t - 3000 && p <= t) {
                answer++;
            }
        }

        return answer;
    }
}

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter obj = new RecentCounter();
 * int param_1 = obj.ping(t);
 */
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : RecentCounter 클래스를 구현하시오.

RecentCounter의 ping 메서드는 매개변수로 받은 정수 t에 대하여 현재까지 받은 정수들 중, t - 3000과 t 사이의 범위에 포함된 정수들의 개수를 int형으로 반환하는 메서드이다.


처음에 ArrayList와 Stream API의 filter(), count()로 문제를 풀어서 금새 문제를 풀 수 있었다.

반복문으로 풀 수는 없을까? 생각이 들어서
Stream API 대신 for문으로 ArrayList에 받은 정수들을 탐색하여 문제를 풀어보았다.

이번에는 정수를 담아두는 자료구조를 다르게 만들 수는 없을까?
라는 생각이 들어서 배열을 사용해 보려고 했는데

Time Limit ExceededOutput Limit Exceeded가 떠서 결국 배열로는 문제를 풀지 못했다.

풀이를 쓰며 보니 관련 주제에 Queue가 있어서 다음에는 Queue로 문제를 풀어보고 싶다.



💬 무엇을 새롭게 알았는지

Stream API를 이용해 문제를 풀어보았다.
클래스를 구현하는 문제를 풀어보았다.



🆙 Next Level







728x90


Top