ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ kit์ ํด์๋ก ๋ถ๋ฅ๋์ด ์๋ ์์ฃผํ์ง ๋ชปํ ์ ์, ์ ํ๋ฒํธ ๋ชฉ๋ก, ์์ฅ, ๋ฒ ์คํธ์จ๋ฒ ๋ฌธ์ ํ์ด.
1. ์์ฃผํ์ง ๋ชปํ ์ ์
์ ๋ ฅ๊ฐ
- participant: ๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด.
- completion: ๋ง๋ผํค์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด.
์ถ๋ ฅ๊ฐ
- ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ ๋ฐํํ๋ผ.
์ ํ์ฌํญ
- 1 <= participant.length <= 100,000
- completion๋ participant์ ๋นํด ๊ธธ์ด๊ฐ 1๊ฐ ์๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- 1 <= ์ฐธ๊ฐ์์ ์ด๋ฆ <= 20
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์๋ค.
๋ฌธ์ ํ์ด
1. finish๋ผ๋ ๋ณ์๋ช ์ ํด์ฌ ๋งต์ completion์ ์๋ ๋ง๋ผํค์ ์์ฃผํ ์ฌ๋์ ์ด๋ฆ์ ์ถ๊ฐํ๋ค. ๋๋ช ์ด์ธ์ด ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์งํฉ์ด ์๋ ํด์ฌ๋งต์ ์ฌ์ฉํ์ฌ ์ด๋ฆ ๋ณ ๋น๋์๋ฅผ ์ ์ฅํ๋ค.
2. particapant์ ๊ธธ์ด๋ completion์ ๋นํด ๊ธธ์ด๊ฐ ํ์ 1๋งํผ ๋ ํฌ๊ธฐ ๋๋ฌธ์ finish์ ์ ์ฅ๋์ด์์ผ๋ฉด
function solution(participant, completion) {
const finish = new Map()
for (const x of completion) {
finish.set(x, (finish.has(x) ? finish.get(x) + 1 : 1))
}
return participant.filter(x => {
if (finish.has(x) && finish.get(x)) {
finish.set(x, finish.get(x) - 1)
return false
}
return true;
}).pop()
}
2. ์ ํ๋ฒํธ ๋ชฉ๋ก
def solution(phone_book):
trie = {}
for nums in phone_book:
curr = trie
for n in nums:
if n not in curr:
curr[n] = {}
curr = curr[n]
if '.' in curr:
return False
else:
if len(curr):
return False
curr['.'] = {}
return True
3. ์์ฅ
function solution(clothes) {
const cnts = new Map()
for (const [_, category] of clothes) {
cnts.set(category, (cnts.has(category) ? cnts.get(category) + 1 : 1))
}
return [...cnts.values()].reduce((acc, cur) => acc === 0 ? cur + 1 : (cur + 1) * acc, 0) - 1
}
4. ๋ฒ ์คํธ์จ๋ฒ
function solution(genres, plays) {
const nums = new Map()
const ids = new Map()
for (const i in genres) {
if (nums.has(genres[i])) {
ids.get(genres[i]).push(i)
nums.set(genres[i], nums.get(genres[i]) + plays[i])
} else {
ids.set(genres[i], [i])
nums.set(genres[i], plays[i])
}
}
const keys = [...nums.keys()].sort((a, b) => nums.get(a) < nums.get(b) ? 1 : -1)
const result = []
for (const key of keys) {
ids.get(key).sort((a, b) => {
if (plays[a] === plays[b]) {
return a < b ? 1 : -1
}
return plays[a] > plays[b] ? 1 : -1
})
result.push(ids.get(key).pop() * 1)
if (ids.get(key).length) {
result.push(ids.get(key).pop() * 1)
}
}
return result
}