LeetCode

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

    이번 문제는 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"); },..

    leetcode 코딩테스트 연습 - 2621. Sleep (JavaScript)

    /** * @param {number} millis */ async function sleep(millis) { return new Promise((resolve, reject) => { const timer = setTimeout(() => { resolve(millis); }, millis); }) } /** * let t = Date.now() * sleep(100).then(() => console.log(Date.now() - t)) // 100 */ leetcode의 문제들은 생각보다 다양한 것 같다. async 함수를 구현해야하는 코딩테스트 연습문제는 처음 접한 것 같다. 어려운 문제는 아니었지만, Promise를 반환하는 함수의 리마인드를 할 수 있었다.

    leetcode 코딩테스트 연습 - 2722. Join Two Arrays by ID (JavaScript)

    이번 문제는 객체를 값으로 가지는 두 배열을 합치는 문제였다. 객체의 id값은 유일해야 하고 양 배열에 id가 같으면, 이 객체를 합해야 하는 문제였다. 문제 접근 자체는 어렵지 않았지만, Time Limit Exceeded을 맞이해버렸다. /** * @param {Array} arr1 * @param {Array} arr2 * @return {Array} */ var join = function(arr1, arr2) { const answer = [...arr1]; const memo = {} for(let el of arr2) { if(el.id >= 0) { let pointer = null; if(memo[el.id] >= 0) { pointer = memo[el.id]; } else { for(..

    leetcode 코딩테스트 연습 - 2624. Snail Traversal (JavaScript)

    이번 문제는 Array의 prototype에 고차 함수를 직접 구현하는 문제였다. this가 호출한 배열을 가르킨다는 것을 이번 문제를 해결하면서 처음 알게되어 의미가 깊다. /** * @param {number} rowsCount * @param {number} colsCount * @return {Array} */ Array.prototype.snail = function(rowsCount, colsCount) { if(rowsCount * colsCount !== this.length) { return []; } const result = []; for(let i = 0; i < rowsCount; i++) { result.push([]); } let row = 0; let isAscending =..

    leetcode 코딩테스트 연습 - 1844. Replace All Digits with Characters (JavaScript)

    지금까지 프로그래머스를 이용하여 코딩테스트 문제를 풀어왔는데, 이번에는 leetcode를 이용하기로 하였다. 영어로 되어 있어 영어 공부를 할수도 있고, 문제가 다양하며 제출한 정답의 런타임이나 메모리 사용량도 알려주는 장점이 있는 플랫폼이다. 이번에 풀어본 문제는 간단한 문제로 아스키 코드를 이용한 문제였다. 자바스크립트에서 아스키 코드의 사용은 다소 생소하였기에 (C언어에서는 문자열이 숫자처럼 계산되었던 기억이 있다) 검색을 통해서 String.fromCharCode()나 char.charCodeAt() 과 같은 메서드를 알아내었다. /** * @param {string} s * @return {string} */ var replaceDigits = function(s) { let answer = "..