Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Each child in a list should have a unique "key" prop.
- rolldown
- electron-packager
- 이미지 데이터 타입
- camera access
- camera permission
- 티스토리 성능
- augmentedDevice
- custom printing
- react-native-dotenv
- Failed to compiled
- dvh
- device in use
- nextjs
- silent printing
- github lfs
- Recoil
- github pdf
- animation
- vercel git lfs
- react-native
- npm package
- ffi-napi
- html
- adb connect
- adb pair
- Can't resolve
- github 100mb
- Git
- ELECTRON
Archives
- Today
- Total
Bleeding edge
[LeetCode] 2053. Kth Distinct String in an Array - 자바스크립트 0621 본문
https://leetcode.com/problems/kth-distinct-string-in-an-array/submissions/
이 문제풀이를 할 때 목표는, 가독성을 높이기 위해 function으로 많이 쪼개려고 노력했다!
1. 주어진 arr에 대하여, 각 arr들의 성분들이 가지고 있는 갯수를 세기 위하여 new map을 만들고, count를 시키는 함수를 만들었다. 이 문제는 순서를 이용하기 때문에 map이 아니라 arr를 리턴한다.
function distinctArrFunc(arr) {
const map = new Map()
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], 1)
} else {
map.set(arr[i], map.get(arr[i]) + 1)
}
}
return Array.from(map)
}
2. 위로 구한 arr를 이용하여 구한 arr는 [component, num]과 같은 arr을 가지게 되는데, num의 갯수가 2보다 작은 distnct한 컴포넌트만을 남기기 위해 Array.filter를 이용한다.
function filterFunc(arr) {
const result = arr.filter((element) => element[1] < 2)
return result
}
3. k가 filterFunc에서 구한 arr보다 length가 더 크면 "" 아닌 경우에는 k-1 인덱스의 component를 리턴한다
var kthDistinct = function (arr, k) {
const distinctArr = distinctArrFunc(arr)
const filterArr = filterFunc(distinctArr)
return filterArr.length >= k ? filterArr[k - 1][0] : ""
};
전체풀이
var kthDistinct = function (arr, k) {
const distinctArr = distinctArrFunc(arr)
const filterArr = filterFunc(distinctArr)
return filterArr.length >= k ? filterArr[k - 1][0] : ""
};
function distinctArrFunc(arr) {
const map = new Map()
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], 1)
} else {
map.set(arr[i], map.get(arr[i]) + 1)
}
}
return Array.from(map)
}
function filterFunc(arr) {
const result = arr.filter((element) => element[1] < 2)
return result
}
'코딩테스트 공부' 카테고리의 다른 글
[LeetCode] 338. Counting Bits - 자바스크립트 - 0623 (0) | 2022.06.23 |
---|---|
[LeetCode] 2126. Destroying Asteroids - 자바스크립트 0621 (0) | 2022.06.21 |
[LeetCode] 1154. Day of the Year - 자바스크립트 0621 (0) | 2022.06.21 |
[LeetCode] 2284. Sender With Largest Word Count - 자바스크립트 0620 (0) | 2022.06.20 |
[LeetCode] 118. Pascal's Triangle - 자바스크립트 0620 (0) | 2022.06.20 |