[문제 링크]

https://leetcode.com/problems/number-of-recent-calls/submissions/1297831

 

[문제 사고]

생성자 함수와 스택을 이용하여 주어진 조건에 충족하는 요소를 넣고 정답을 반환한다.

 

[문제 해결]

1. 생성자 함수에 정답에 해당하는 answer에 빈 배열을 할당하여 선언한다.
2. answer 배열에 t를 push하고 반복문을 돌면서 answer 배열의 첫번째 요소가 t - 3000 값보다 작은 값일 경우에 배열의 가장 앞의 요소를 제거한다.
3. 반복문을 돌고 남은 요소들이 들어있는 배열의 길이 값을 반환한다.

 

[작성 코드]

var RecentCounter = function() {
    this.answer = [];    
};

/** 
 * @param {number} t
 * @return {number}
 */
RecentCounter.prototype.ping = function(t) {
    this.answer.push(t);
    while(this.answer[0] < t - 3000){
        this.answer.shift();
    }
    return this.answer.length
};

/** 
 * Your RecentCounter object will be instantiated and called as such:
 * var obj = new RecentCounter()
 * var param_1 = obj.ping(t)
 */

 

[문제 회고]

많이 사용해보지 않은 생성자 함수를 갑작스레 다루어보니 당황스러웠지만 문제 자체의 난이도가 높지 않기 때문에 반복문과 스택을 이용해서 단순 구현을 하여 풀어낼 수 있었다.

+ Recent posts