[LeetCode] 933. Number of Recent Calls, Easy
·
CodingTest/LeetCode
1. 문제요구 사항에 맞는 RecenCounter class를 구현하라.2. 해결class RecentCounter { queue: number[] constructor() { this.queue = []; } ping(t: number): number { const min = t - 3000, max = t; let recent = 0; this.queue.push(t); while(this.queue[0] max) { this.queue.shift(); } return this.queue.length }}/** * Your RecentCounter ..
[LeetCode] 1207. Unique Number of Occurrences, Easy
·
CodingTest/LeetCode
1. 문제정수 배열 arr이 주어질 때, 각 요소의 등장 횟수가 고유하면 true를 반환하고 아니면 false를 반환하라.2. 해결function uniqueOccurrences(arr: number[]): boolean { const map = new Map(); for(const num of arr) { map.set(num, (map.get(num) || 0 )+ 1) } return map.size === new Set(map.values()).size;};map에 각 등장 횟수를 저장한다.요소의 수와 고유한 등장횟수가 같으면 true, 아니면 false를 반환한다.
[LeetCode] 2215. Find the Difference of Two Arrays, Easy
·
CodingTest/LeetCode
1. 문제정수 배열 nums1과 nums2가 주어질 때, 2개의 배열을 담은 배열을 반환하라.첫 번째 배열에는 nums2 배열의 요소가 아닌 고유한 값.두 번째 배열에는 nums1 배열의 요소가 아닌 고유한 값.2. 해결function findDifference(nums1: number[], nums2: number[]): number[][] { const set1 = new Set(nums1); const set2 = new Set(nums2); const result = [[], []]; for(const num of set1) { if(!set2.has(num)) result[0].push(num); } for(const num of set2) { ..
[LeetCode] 1732. Find the Highest Altitude, Easy
·
CodingTest/LeetCode
1. 문제고도 변화량을 담은 배열 gain이 주어질 때, 도달했던 고도 중 가장 높은 고도를 반환하라.2. 해결function largestAltitude(gain: number[]): number { let max = 0; let sum = 0; for(const altitude of gain) { sum += altitude; max = Math.max(max, sum); } return max;};prefix Sum을 이용해서 이동 구간마다 현재 고도를 sum에 저장한 뒤, max를 구한다.주의 점은 변화한 고도가 음수만 존재하는 경우, 0에서 시작했기 때문에 최대 고도는 0이다.
[LeetCode] 643. Maximum Average Subarray I, Easy
·
CodingTest/LeetCode
1. 문제정수 배열 nums와 정수 k가 주어질 때, k 길이의 구간 평균값이 가장 큰 경우를 반환하라.2. 해결function findMaxAverage(nums: number[], k: number): number { let max = Number.MIN_SAFE_INTEGER; let left = 0, right = 0; let sum = 0; while(right 연속된 구간의 평균이 중요하므로, 두 포인터를 앞에서 부터 시작.sum을 갱신하며 right 증가.right - left 가 k-1과 같으면, 해당 크기 구간에 도달한 것이므로, max 갱신 및 left 증가.left 증가하면서 sum에서 left 값 제외.
[LeetCode] 392. Is Subsequence, Easy
·
CodingTest/LeetCode
1. 문제문자열 s가 문자열 t의 서브 시퀀스인 경우 true를 반환하고 아닌 경우 false를 반환하라.2. 해결function isSubsequence(s: string, t: string): boolean { let sPointer = 0, tPointer = 0; while(sPointer 일치하는 문자를 찾으면 s pointer를 증가 시켜 값이 s.length와 동일하면 s는 t의 서브 시퀀스.
[LeetCode] 345. Reverse Vowels of a String, Easy
·
CodingTest/LeetCode
1. 문제문자열 s가 주어질 때, 모음의 순서를 뒤집은 문자열을 반환하라IceCreAm의 모음 순서는 I, e, e, A => A, e, e, I로 뒤집어 바꾼 뒤 반환.2. 해결function reverseVowels(s: string): string { const vowels = [97, 101, 105, 111, 117]; const strVowels = []; for(const char of s) { if (vowels.includes(char.toLowerCase().charCodeAt(0))) { strVowels.push(char) } } strVowels.reverse(); const sArr = s..
[LeetCode] 605. Can Place Flowers, Easy
·
CodingTest/LeetCode
1. 문제화단 배열 flowerbed가 0은 비어있는 곳, 1은 꽃이 심어져 있는 곳이라할 때 인접한 곳에는 꽃을 심을 수 없다는 규칙이 있다.이 때 n개의 꽃을 모두 심을 수 있으면 true, 아니면 false를 반환하라.2. 해결function canPlaceFlowers(flowerbed: number[], n: number): boolean { let pointer = 0; while(pointer 0) { if(flowerbed[pointer] === 1) { pointer++; continue; } let dx = [-1, 1]; if(pointer === 0) { dx =..
[LeetCode] 1431. Kids With the Greatest Number of Candies, Easy
·
CodingTest/LeetCode
1. 문제n명의 학생이 가지고 있는 사탕의 수를 나타내는 배열 candies와 남은 사탕 extraCandies가 주어질 때, 각 학생에게 extraCandies를 준 뒤 학생들 중 가장 많은 사탕의 수이면 true를 담고 아니면 false를 담아 반환하라.2. 해결function kidsWithCandies(candies: number[], extraCandies: number): boolean[] { let max = Number.MIN_SAFE_INTEGER; const ans = [] for(const candy of candies) max = Math.max(max, candy); for(const candy of candies) { if(candy + extr..
[LeetCode] 1071. Greatest Common Divisor of Strings, Easy
·
CodingTest/LeetCode
1. 제목문자열 str1과 str2가 주어질 때, 두 문자열을 구성할 수 있는 최대 문자열 x를 구하라.2. 해결function gcdOfStrings(str1: string, str2: string): string { if(str1 + str2 !== str2 + str1) return ''; function gcd(a: number, b: number) { return b === 0 ? a : gcd(b, a % b); } return str1.slice(0, gcd(str1.length, str2.length)) // let isLong1 = str1.length > str2.length ? true : false; // let minLength ..