일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- ffi-napi
- Failed to compiled
- 티스토리 성능
- ELECTRON
- custom printing
- nextjs
- augmentedDevice
- rolldown
- electron-packager
- github lfs
- dvh
- camera permission
- camera access
- Can't resolve
- animation
- github 100mb
- Git
- vercel git lfs
- device in use
- Each child in a list should have a unique "key" prop.
- 이미지 데이터 타입
- Recoil
- github pdf
- adb connect
- react-native
- npm package
- react-native-dotenv
- silent printing
- adb pair
- html
- Today
- Total
Bleeding edge
[LeetCode] 2284. Sender With Largest Word Count - 자바스크립트 0620 본문
https://leetcode.com/problems/sender-with-largest-word-count/
Sender With Largest Word Count - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
이 문제에서는, map과 여러 조건의 sort를 사용하는 문제이다.
1. 먼저 map을 한개 만들어둔다. 이렇게 key를 활용하는 경우에는 map이 효율적이다.
const map = new Map()
2. 주어진 senders를 기준으로 루프를 만들고. messages를 " " 스페이스로 스플릿 한 다음에, length를 선언한다
for (let i = 0; i < senders.length; i++) {
const number = messages[i].split(" ").length
}
3. map에 senders[i]가 없다면, map set에 2에서 구한 number를 대입하고, 만약 map에 senders[i]에 값이 있다면 그 값을 get하여 number와 더한뒤 set한다
if (!map.has(senders[i])) {
map.set(senders[i], number)
} else {
map.set(senders[i], map.get(senders[i]) + number)
}
4. 위에서 구한 map을 array from을 통하여 array로 바꿔준다. map에는 key를 통한 구성만 되어있지 누가 앞이고 이런 순서가 없기 때문이다.
const answer = Array.from(map)
5. 4에서 구한 정렬을 sort를 시킬 것이다. 이때 sort의 규칙은, a[1] b[1]의 대소에 따라 더 큰 것을 앞으로 더 작은 것을 뒤로 할 것이다.
const answer = Array.from(map).sort((a, b) => {
if (a[1] > b[1]) { return -1 } else if (a[1] < b[1]) { return 1 }
}
6. a[1] 과 b[1]이 같은 경우에는, a[0] b[0]중 사전적으로 좀 더 뒤에 있는 것을 앞으로 오게해야한다.
const answer = Array.from(map).sort((a, b) => {
if (a[1] > b[1]) { return -1 } else if (a[1] < b[1]) { return 1 }
else if (a[1] === b[1]) {
if (a[0] > b[0]) { return -1 }
else if (a[0] < b[0]) { return 1 }
}
}
전체 풀이
var largestWordCount = function (messages, senders) {
const map = new Map()
for (let i = 0; i < senders.length; i++) {
const number = messages[i].split(" ").length
if (!map.has(senders[i])) {
map.set(senders[i], number)
} else {
map.set(senders[i], map.get(senders[i]) + number)
}
}
const answer = Array.from(map).sort((a, b) => {
if (a[1] > b[1]) { return -1 } else if (a[1] < b[1]) { return 1 }
else if (a[1] === b[1]) {
if (a[0] > b[0]) { return -1 }
else if (a[0] < b[0]) { return 1 }
}
}
)
return answer[0][0]
};
'코딩테스트 공부' 카테고리의 다른 글
[LeetCode] 2053. Kth Distinct String in an Array - 자바스크립트 0621 (0) | 2022.06.21 |
---|---|
[LeetCode] 1154. Day of the Year - 자바스크립트 0621 (0) | 2022.06.21 |
[LeetCode] 118. Pascal's Triangle - 자바스크립트 0620 (0) | 2022.06.20 |
[LeetCode] 66. Plus One - 자바스크립트 0620 (0) | 2022.06.20 |
[LeetCode] 1701. Average Waiting Time - 자바스크립트 0617 (0) | 2022.06.17 |