์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Cmarket
- ์คํ ์ด์ธ ์ฝ๋
- ๋ฒ์ง ๋ชจํ
- ํผํฐ ๋ชจ๋น
- ๊ณ ์ฐจํจ์
- props drilling
- Study
- fetch api
- ๋ฒ๋ค๋ง
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- ์ปดํจํฐ ๊ณตํ
- prototype
- css animation
- html
- git
- WEB
- ํ๋ก๊ทธ๋๋จธ์ค
- Lifting state
- ํ ์คํธ ์์
- wai-aria
- css
- jsx
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- State
- JavaScript
- Effect Hook
- BFS์ DFS
- ์ ์ด์ฝฅ ๋์จ
- ์๋งจํฑ์์
- React
- Today
- Total
roqkf
์คํฐ๋ ๊ธฐ๋ก 21 ๋ณธ๋ฌธ

๋ฌธ์ ๋ชฉ๋ก

โค๏ธ๐ฅ ๋ฉ๋ฆฌ ๋ฐ๊ธฐ

function solution(n) {
// ๊ฒฝ์ฐ์ ์??
// n๊น์ง์ ํผ๋ณด๋์น ์์ด์ ๊ตฌํ๊ณ 1234567 ๋๋ ๋๋จธ์ง ๋ฆฌํด
let fibo = [0, 1];
for (let i = 2; i <= n; i++) {
fibo.push((fibo[i - 1] + fibo[i - 2]) % 1234567);
}
}
solution(4);
/*
1 => 1
! 1 ๋ฐฉ๋ฒ = 1
2 => 1, 1 / 2 = 2
! 2 ๋ฐฉ๋ฒ = 2
3 => 1, 1, 1 / 2, 1 / 1, 2 = 3
! 3 ๋ฐฉ๋ฒ = 3
4 => 1, 1, 1, 1 / 2, 2 / 2, 1, 1 / 1, 2, 1 / 1, 1, 2 = 5
! 4 ๋ฐฉ๋ฒ = 5
5 => 1, 1, 1, 1, 1 / 2, 2, 1 / 2, 1, 2 / 1, 2, 2 / 2, 1, 1, 1 / 1, 2, 1, 1 / 1, 1, 2, 1 / 1, 1, 1, 2
! 5 ๋ฐฉ๋ฒ = 8
6 => 1, 1, 1, 1, 1, 1 / 2, 2, 2 / 1, 1, 2, 2 / 2, 2, 1, 1 / 1, 2, 1, 2 / 1, 2, 2, 1 / 2, 1, 1, 2 / 2, 1, 2, 1 / 1, 1, 1, 1, 2 / 1, 1, 1, 2, 1 / 1, 1, 2, 1, 1 / 1, 2, 1, 1, 1 / 2, 1, 1, 1, 1
! 6 ๋ฐฉ๋ฒ = 13
๋๋ฌ ๋ฐฉ๋ฒ์ ์ = [1, 2, 3, 5, 8, 13 ...]
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8
ํผ๋ณด๋์น ์์ด??
*/
์ ๋ ฅ๋ฐ์ ๋งค๊ฐ๋ณ์ n์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์๋ค. 1๋ถํฐ n๊น์ง ํ๋ํ๋ ์ด๋ป๊ฒ ๋์ค๋์ง ํ์ธํด ๋ณด๊ณ ๋ช ๊ฐ์ง์ ๋ฐฉ๋ฒ์ด ๋์๋์ง ๋ณด๋ค๋ณด๋ ํผ๋ณด๋์น๋ก ํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค! ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ ๋ฌธ์ ์๋ค
const factorial = (n) => {
if(n === 0) return BigInt(1);
let num = BigInt(1);
let a = BigInt(n);
while(a != BigInt(1)){
@@ -10,6 +10,7 @@ const factorial = (n) => {
}
function solution(n) {
// https://bhsmath.tistory.com/153
// n๊ฐ๋ฅผ ๋์ดํ๋ ๋ฐฉ๋ฒ n!/ ๊ฐ์๊ฑฐ 3๊ฐ๋ฅผ ๋์ดํ๋ ๋ฒ 3!, ๊ฐ์๊ฑฐ 2๊ฐ๋ฅผ ๋์ดํ๋ ๋ฒ 2!
// 2 2, 1, 1, 1
// 5!/(3! * 2!) = 10
// ๋ฌถ์์ ๊ตฌํ๋ ๊ณต์?
// ๋๊ฐ์ฉ ๋ฝ๋ ๊ฒฝ์ฐ n / 2
// n์ด 4์ผ ๊ฒฝ์ฐ 2, 1, 0 ๋ฌถ์ ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ํ๋จ.
// 2, 2 2
// 1, 1 1 2, 1 2 1, 2 1 1
// 0, 1 1 1 1
// n 3
// 1, 2 1, 2 1
// 0 1 1 1
let answer = BigInt(0);
const maxTwoNum = Math.floor(n / 2);
for(let twoNum = 0 ; twoNum <= maxTwoNum ; twoNum++){
const oneNum = n - (twoNum * 2)
const length = twoNum + oneNum;
const value = factorial(length) / (factorial(oneNum) * factorial(twoNum));
answer += value;
}
return Number(answer % BigInt(1234567));
}
ํจ๊ทผ๋ ์ฝ๋ ํจ๊ทผ๋์ ํผ๋ณด๋์น๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ ๊ฒ์ด ์๋ ์์ด์ ์ฌ์ฉํ์ฌ ํ์ดํ์ จ๋ค. ์๋ฌ๋ผ์ ์ข์๋ค... ํจ๊ทผ๋์ด ์ฃผ์์ ๋ด์์ฃผ์ https://bhsmath.tistory.com/153 ์ด๊ณณ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ดํด๋ฅผ ํ์๋ค.
โค๏ธ๐ฅ H-Index

function solution(citations) {
/*
H-์ง์ => ํน์ ์ฐ๊ตฌ์์ ์ฐ๊ตฌ ์ฑ๊ณผ๋ฅผ ํ๊ฐํ๊ธฐ ์ํ ์งํ, ๋ฐํ ๋
ผ๋ฌธ์์ ํผ์ธ์ฉ์๋ฅผ ์ฌ์ฉํด ํ๋ฌธ์ ์ญ๋ ์ธก์
H-์ง์ ๊ตฌํ๊ธฐ => ์ ์ฒด ๋
ผ๋ฌธ ์ค ๋ง์ด ์ธ์ฉ๋ ์์ผ๋ก ์ ๋ ฌ ํ, ํผ์ธ์ฉ์๊ฐ ๋
ผ๋ฌธ์์ ๊ฐ์์ง๊ฑฐ๋ ํผ์ธ์ฉ์๊ฐ ๋
ผ๋ฌธ์๋ณด๋ค ์์์ง๊ธฐ ์์ํ๋ ์ซ์!
์ฐธ๊ณ : https://www.ibric.org/myboard/read.php?Board=news&id=270333
*/
/* ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ, ์ธ์ฉ ํ์ h๊ฐ hํธ์ด ๋ ๋ ๋ฐ๋ก ๋ฆฌํด */
citations.sort((a, b) => b - a);
for (let h = 0; h < citations.length; h++) {
//ํผ์ธ์ฉ์๊ฐ ๋
ผ๋ฌธ์๋ณด๋ค ์์์ง๊ธฐ ์์ํ ๋ ๋ฆฌํด
if (citations[h] <= h) {
return h;
}
}
return citations.length;
}
solution([3, 0, 6, 1, 5]);
/*
? ๋ง์ด ์ธ์ฉ๋ ์์ผ๋ก ์ ๋ ฌ ํ,
? ์ธ์ฉ์๊ฐ ๋
ผ๋ฌธ์์ ๊ฐ์์ง๊ฑฐ๋ ํผ์ธ์ฉ์๊ฐ ๋
ผ๋ฌธ์๋ณด๋ค ์์์ง๊ธฐ ์์ํ๋ ์ซ์
ํผ์ธ์ฉ์ ๋
ผ๋ฌธ์ boolean
6 1 false
5 2 false
3 3 true (๋น์ฒจ!!)
1 4
0 5
*/
๋ฌธ์ ์์ฒด๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์์ ๊ฒ์ํด์ ๋ ผ๋ฌธ์ ์ฐธ๊ณ ํด์ ์ดํดํ ๋ฌธ์ ... ์ฒ์์ ์ดํด๋ฅผ ๋ชป ํ๊ฒ ์๋๋ฐ ์ ๋ง ๋ฌธ์ ์ ๋์จ ๋ฌธ์ฅ ๊ทธ๋๋ก์๋ค. ํผ์ธ์ฉ์๊ฐ ๋ ผ๋ฌธ์๋ณด๋ค ์์์ง๊ธฐ ์์ํ๋ ์์ ์ ๋ฐ๋ก ๋ฆฌํด์ ํ๊ฒ ํด์ฃผ์๋ค!
โค๏ธ๐ฅ [1์ฐจ ์บ์]

function solution(cacheSize, cities) {
/*
LRU(์ ์ผ ์ค๋ ์ฌ์ฉํ์ง ์์ ํ์ด์ง ๊ต์ฒด)
Set ๊ฐ์ฒด ์ฌ์ฉํด์ ํ์ด๋ณด์!!
1. hasํด์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ์๋์ง๋ถํฐ ๋จผ์ ํ์ธ
2. ์๋ ๊ฒฝ์ฐ ์ง๊ธ ๋ฃ์ ๋ฐ์ดํฐ ์ญ์ , cHit๋๊น +1
์๋ ๊ฒฝ์ฐ ์บ์ ๊ฝ ์ฐธ => ์บ์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ ์ฅ ํ, ์ฒซ๋ฒ์งธ ๊ฐ ์ญ์ , cMiss๋๊น +5
์บ์ ์ ์ฐธ => cMiss๋๊น +5
3. ์ง๊ธ ๋ฃ์ ๋ฐ์ดํฐ add ํด ์ฃผ๊ธฐ
*/
let runtime = 0;
const cache = new Set();
const cHit = 1;
const cMiss = 5;
if (cacheSize === 0) return cities.length * cMiss;
cities = cities.map((ele) => ele.toUpperCase());
for (let i = 0; i < cities.length; i++) {
const boolean = cache.has(cities[i]);
console.log(cities[i]);
console.log(cache.has(cities[i]));
if (boolean) {
cache.delete(cities[i]);
runtime += cHit;
} else if (cache.size === cacheSize) {
const first = [...cache][0];
cache.delete(first);
runtime += cMiss;
} else {
runtime += cMiss;
}
cache.add(cities[i]);
}
return runtime;
console.log(runtime);
}
solution(3, [
'Jeju',
'Pangyo',
'Seoul',
'NewYork',
'LA',
'Jeju',
'Pangyo',
'Seoul',
'NewYork',
'LA',
]);
/*
cache hit => 1
cache miss => 5
inoutput ex) (3, ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"])
! miss miss miss miss miss miss miss
1 "Jeju" "Jeju" "Jeju" "Pangyo" "Seoul" "NewYork" "LA"
2 "Pangyo" "Pangyo" "Seoul" "NewYork" "LA" "Jeju"
3 "Seoul" "NewYork" "LA" "Jeju" "Pangyo"
! miss miss
1 "Jeju" "Pangyo"
2 "Pangyo" "Seoul"
3 "Seoul" "NewYork"
=> 10 * 5 = 50
inoutput ex) (3, ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"])
! miss miss miss hit hit hit hit hit hit
1 Jeju Jeju Jeju Pangyo Seoul Jeju Pangyo Seoul Jeju
2 Pangyo Pangyo Seoul Jeju Pangyo Seoul Jeju Pangyo
3 Seoul Jeju Pangyo Seoul Jeju Pangyo Seoul
=> 15 + 6 = 21
*/
์ ๋ฒ ์คํฐ๋ ๋ ์ง์๋์ด Set ๊ฐ์ฒด๋ฅผ ์ฐ์ ๊ฒ ๋ณด๊ณ ๊ผญ ํ ๋ฒ ์จ ๋ณด๊ณ ์ถ์ด์ ์๋๋ findindex๋ฅผ ์ฌ์ฉํด์ ํ์ด๋ณด๋ ค๊ณ ํ๋ค๊ฐ index๋ ํด๋น ์ธ๋ฑ์ค ์์น์ ๊ฐ์ ์ญ์ ํ๊ธฐ ๊น๋ค๋ก์์ Set์ ์ด์ฉํด๋ณด์๊ณ ํ๊ณ ์ฑ๊ณต์ํจ ์ฝ๋์ด๋ค ์๊ฐ๋ณด๋ค ๋ค๋ฃจ๊ธฐ ๊ฐํธํด์ Set ๋๋ฆ ์ข์ ๋์ด๊ตฌ๋...์ถ์๋ค. ์ ์ฒ๊ธฐ ๊ณต๋ถํ๋ฉด์ ๊ณต๋ถํ๋ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ๋ ๋ค์ ์ ๋ฆฌํ ์ ์์๋ค. ์ด๋ฒ ๋ฌธ์ ๋ค์ ๋์ฒด์ ์ผ๋ก ์ ์ฉํ ๋ฌธ์ ๋ค์ด ๋ง์์ ์ข์๋ค.
'๐ป Development > Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฐ๋ ๊ธฐ๋ก 23 (0) | 2023.01.09 |
---|---|
์คํฐ๋ ๊ธฐ๋ก 22 (0) | 2023.01.09 |
์คํฐ๋ ๊ธฐ๋ก 20 (0) | 2022.12.27 |
์คํฐ๋ ๊ธฐ๋ก 18 (0) | 2022.12.19 |
์คํฐ๋ ๊ธฐ๋ก 17 (0) | 2022.12.16 |