코딩테스트 연습

leetcode 코딩테스트 연습 - 2637. Promise Time Limit (JavaScript)

citron031 2023. 10. 7. 23:54

이번 문제는 Promise를 사용하는 함수와 시간제한이 있을 때, 이 함수가 시간 제한 내에 실행이 끝나는지를 판별하는 코드를 작성해야 했다.

setInterval을 사용하여 시간을 재고 이 시간이 끝나기 전에 성공하는지 실패하는지 확인하는 방법으로 코드를 작성하려고 했는데, 생각처럼 되지 않았고 결국 다른 사람의 힌트들을 보고 다음의 코드를 작성하였다.

var timeLimit = function(fn, t) {
	return async function(...args) {
        const result = fn(...args);
        const checker = new Promise((resolve, reject) => {
            setTimeout(() => {
                reject("Time Limit Exceeded");
            }, t);
        })
        return Promise.race([result, checker]);
    }
};

가장 깔끔한 해답은 setTimeout으로 reject를 반환하는 함수와 기존의 함수 실행을 Promise.race로 경쟁을 붙이는 것 이었다.

아무래도 Promise는 편리한 async await를 너무 생각없이 선택해오지 않았나 하는 반성을 했다.

Promise에 대해서 좀 더 잘 알고 컨트롤할 수 있도록 해야겠다고 느끼게 해준 문제였다.