[JavaScript/section 7] 08 - νšŒμ˜μ‹€ λ°°μ •
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 08 - νšŒμ˜μ‹€ λ°°μ •(그리디 μ•Œκ³ λ¦¬μ¦˜) 각 νšŒμ˜μ— λŒ€ν•΄ μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ Έ 있고, 각 νšŒμ˜κ°€ κ²ΉμΉ˜μ§€ μ•Šκ²Œ ν•˜λ©΄μ„œ νšŒμ˜μ‹€μ„ μ‚¬μš©ν•  수 μžˆλŠ” μ΅œλŒ€μˆ˜μ˜ 회의λ₯Ό μ°ΎλŠ” λ¬Έμ œμ΄λ‹€. 단, 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ˜ 쑰건은 (μ‹œμž‘μ‹œκ°„ = endTime) { answer++; endTime = meeting[i][1]; } } return answer; } let arr = [ [3, 3], [1, 3], [2, 3], ]; console.log(solution(arr));
[JavaScript/section 7] 07 - μ’Œν‘œ μ •λ ¬
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 07 - μ’Œν‘œ μ •λ ¬ N개의 ν‰λ©΄μƒμ˜ μ’Œν‘œ(x, y)κ°€ 주어지면 λͺ¨λ“  μ’Œν‘œλ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ •λ ¬ 기쀀은 λ¨Όμ € x값에 μ˜ν•΄μ„œ μ •λ ¬ν•˜κ³ , x값이 같을 경우 y값에 μ˜ν•΄ μ •λ ¬ν•œλ‹€. πŸ‘ 풀이 방법 sort() ν•¨μˆ˜λ₯Ό μ΄μš©ν•œλ‹€. 0번 μΈλ±μŠ€λŠ” x, 1번 μΈλ±μŠ€λŠ” y에 ν•΄λ‹Ήν•œλ‹€. x값이 같을 경우 y값에 μ˜ν•΄ μ •λ ¬ν•˜κ³  λ‹€λ₯Ό 경우 x값에 μ˜ν•΄ μ •λ ¬ν•œλ‹€. πŸ“ 풀이 function solution(arr) { let answer = arr; arr.sort((a, b) => { if (a[0] === b[0]) return a[1] - b[1]; else return a[0] - b[0]; }); return answer; } let arr = [ [2, 7], [1, 3], [1, 2], [2, 5..
[JavaScript/section 7] 06 - μž₯λ‚œκΎΈλŸ¬κΈ° ν˜„μˆ˜
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 06 - μž₯λ‚œκΎΈλŸ¬κΈ° ν˜„μˆ˜ ν˜„μˆ˜μ™€ 짝꿍이 자리λ₯Ό λ°”κΎΌ 반 ν•™μƒλ“€μ˜ 일렬둜 μ„œμžˆλŠ” ν‚€ 정보가 μ£Όμ–΄μ§ˆ λ•Œ ν˜„μˆ˜κ°€ 받은 λ²ˆν˜Έμ™€ ν˜„μˆ˜ 짝꿍이 받은 번호λ₯Ό μ°¨λ‘€λŒ€λ‘œ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€. λ‚˜μ˜ 풀이 방법 (❌) μ™œ ν‹€λ Έμ„κΉŒβ“ 반 ν•™μƒλ“€μ˜ ν‚€ 정보가 μ£Όμ–΄μ§ˆ λ•Œ ν˜„μˆ˜μ™€ 같은 ν‚€κ°€ μžˆλŠ” 경우 λ°˜λ‘€κ°€ 생긴닀. for 문을 λŒλ©΄μ„œ i + 1 보닀 i κ°€ 큰 경우λ₯Ό μ°ΎλŠ”λ‹€. i + 1이 ν˜„μˆ˜κ°€ 받은 λ²ˆν˜Έκ°€ λœλ‹€. 정렬을 ν•œ ν›„ indexOf() ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ μ›λž˜ ν˜„μˆ˜κ°€ λ°›μ•„μ•Όν•˜λŠ” 번호λ₯Ό μ°ΎλŠ”λ‹€. 이 λ²ˆν˜Έκ°€ ν˜„μˆ˜ 짝꿍이 받은 λ²ˆν˜Έμ΄λ‹€. πŸ‘ κ°•μ‚¬λ‹˜ 풀이 방법 배열을 λ³΅μ‚¬ν•˜λŠ” λ°©λ²•μ—λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆμ§€λ§Œ μ—¬κΈ°μ—μ„œλŠ” Array.from(arr)κ³Ό arr.slice()λ₯Ό μ†Œκ°œν•΄μ£Όκ³  μžˆλ‹€. 단, 1 레벨(1차원 λ°°μ—΄)에 λŒ€ν•΄μ„œλŠ” κΉŠμ€ ..
[JavaScript/section 7] 05 - LRU
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 05 - Least Recently Used(카카였 μΊμ‹œ 문제 λ³€ν˜•) λ§Œμ•½ μΊμ‹œμ˜ μ‚¬μ΄μ¦ˆκ°€ 5이고 μž‘μ—…μ΄ [2, 3, 1, 6, 7] 순으둜 μ €μž₯λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μžβ— 1) Cache Miss: ν•΄μ•Όν•  μž‘μ—…μ΄ μΊμ‹œμ— μ—†λŠ” μƒνƒœλ‘œ μœ„ μƒνƒœμ—μ„œ λ§Œμ•½ μƒˆλ‘œμš΄ μž‘μ—…μΈ 5번 μž‘μ—…μ„ CPUκ°€ μ‚¬μš©ν•œλ‹€λ©΄ Cache Missκ°€ 되고 λͺ¨λ“  μž‘μ—…μ΄ λ’€λ‘œ λ°€λ¦° ν›„ 5번 μž‘μ—…μ€ μΊμ‹œμ˜ 맨 μ•žμ— μœ„μΉ˜ν•œλ‹€. [5, 2, 3, 1, 6] (7번 μž‘μ—…μ€ μΊμ‹œμ—μ„œ μ‚­μ œλœλ‹€.) 2) Cache Hit: ν•΄μ•Όν•  μž‘μ—…μ΄ μΊμ‹œμ— μžˆλŠ” μƒνƒœλ‘œ μœ„ μƒνƒœμ—μ„œ λ§Œμ•½ 3번 μž‘μ—…μ„ CPUκ°€ μ‚¬μš©ν•œλ‹€λ©΄ Cache Hit이 되고, 3번 μ•žμ— μžˆλŠ” 5, 2번 μž‘μ—…μ€ ν•œ μΉΈ λ’€λ‘œ λ°€λ¦° ν›„ 3번 μž‘μ—…μ€ μΊμ‹œμ˜ 맨 μ•žμ— μœ„μΉ˜ν•œλ‹€. [3, 5, 2, 1, 6..
[JavaScript/section 7] 04 - μ‚½μž… μ •λ ¬
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 문제 N개의 μˆ«μžκ°€ μž…λ ₯되면 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ •λ ¬ν•˜λŠ” 방법은 μ‚½μž… 정렬이닀. 🧐 μ‚½μž… μ •λ ¬(insertion sort)μ΄λž€ λ¬΄μ—‡μΌκΉŒβ“ 손 μ•ˆμ˜ μΉ΄λ“œλ₯Ό μ •λ ¬ν•˜λŠ” 방법과 μœ μ‚¬ν•˜λ‹€. μƒˆλ‘œμš΄ μΉ΄λ“œλ₯Ό 기쑴의 μ •λ ¬λœ μΉ΄λ“œ μ‚¬μ΄μ˜ μ˜¬λ°”λ₯Έ 자리λ₯Ό μ°Ύμ•„ μ‚½μž…ν•œλ‹€. μƒˆλ‘œ μ‚½μž…λ  μΉ΄λ“œμ˜ 수만큼 λ°˜λ³΅ν•˜κ²Œ 되면 전체 μΉ΄λ“œκ°€ μ •λ ¬λœλ‹€. 자료 λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ•žμ—μ„œλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 이미 μ •λ ¬λœ λ°°μ—΄ λΆ€λΆ„κ³Ό λΉ„κ΅ν•˜μ—¬, μžμ‹ μ˜ μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ‚½μž…ν•¨μœΌλ‘œμ¨ 정렬을 μ™„μ„±ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 맀 μˆœμ„œλ§ˆλ‹€ ν•΄λ‹Ή μš”μ†Œλ₯Ό μ‚½μž…ν•  수 μžˆλŠ” μœ„μΉ˜λ₯Ό μ°Ύμ•„ ν•΄λ‹Ή μœ„μΉ˜μ— λ„£λŠ”λ‹€. πŸ“ 풀이 πŸ§‘πŸ»‍πŸ’» λ‚˜μ˜ 풀이 방법 function solution(arr) { const answer = []; for (let i = 0; i < arr.l..
[JavaScript/section 7] 03 - Special Sort(ꡬ글 인터뷰)
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 03 - Special Sort(ꡬ글 인터뷰) N개의 μ •μˆ˜κ°€ μž…λ ₯되면 μž…λ ₯된 값을 μ •λ ¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€. 음의 μ •μˆ˜λŠ” μ•žμͺ½μ— μ–‘μ˜ μ •μˆ˜λŠ” λ’·μͺ½μ— μžˆμ–΄μ•Ό ν•œλ‹€. λ˜ν•œ μ–‘μ˜ μ •μˆ˜μ™€ 음의 μ •μˆ˜μ˜ μˆœμ„œμ—λŠ” 변함이 μ—†μ–΄μ•Ό ν•œλ‹€. πŸ‘ 풀이 방법(κ°•μ‚¬λ‹˜κ³Ό 동일) 버블 μ •λ ¬ 문제의 μ‘μš©μœΌλ‘œ 풀이 방법 λ˜ν•œ 맀우 λΉ„μŠ·ν•˜λ‹€. 자료λ₯Ό κ΅ν™˜ν•˜λŠ” 쑰건만 λ°”κΎΈλ©΄ λœλ‹€. jλ₯Ό λŒλ•Œλ§ˆλ‹€ μ„œλ‘œ μΈμ ‘ν•œ μ›μ†Œ 쀑 μ•žμͺ½ μ›μ†Œ jκ°€ μ–‘μˆ˜μ΄κ³ , λ’€μͺ½ μ›μ†Œ j + 1이 음수이면 κ΅ν™˜ν•˜λ©΄μ„œ 자료λ₯Ό μ •λ ¬ν•œλ‹€. 1νšŒμ „μ„ μˆ˜ν–‰ν•  λ•Œλ§ˆλ‹€ 정렬이 ν™•μ •λ˜λŠ” μžλ£Œκ°€ ν•˜λ‚˜μ”© λŠ˜μ–΄λ‚˜λ―€λ‘œ jκ°€ λ„λŠ” λ²”μœ„λŠ” ν•˜λ‚˜μ”© 쀄어든닀. πŸ“ 풀이 function solution(arr) { // Shallow Copy let answer = arr; for (let i = 0;..
[JavaScript/section 7] 02 - 버블 μ •λ ¬
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 문제 N개의 μˆ«μžκ°€ μž…λ ₯되면 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ •λ ¬ν•˜λŠ” 방법은 버블 정렬이닀. 🧐 버블 μ •λ ¬(bubble sort)μ΄λž€ λ¬΄μ—‡μΌκΉŒβ“ 주어진 λ°°μ—΄μ—μ„œ μ„œλ‘œ μΈμ ‘ν•œ 두 μš”μ†Œλ₯Ό κ²€μ‚¬ν•˜μ—¬ μ •λ ¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ μΈμ ‘ν•œ 2개의 μš”μ†Œλ₯Ό λΉ„κ΅ν•˜μ—¬ 크기가 μˆœμ„œλŒ€λ‘œ λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μ„œλ‘œ κ΅ν™˜ν•œλ‹€. κ΅¬ν˜„μ΄ 맀우 κ°„λ‹¨ν•˜μ§€λ§Œ λΉ„νš¨μœ¨μ μΈ 방법이닀. 평균 μ‹œκ°„λ³΅μž‘λ„ O(N^2) πŸ“ 풀이 function solution(arr) { let answer = arr; // 1νšŒμ „μ„ μˆ˜ν–‰ν•  λ•Œλ§ˆλ‹€ 정렬이 ν™•μ •λ˜λŠ” μš”μ†Œκ°€ ν•˜λ‚˜μ”© 증가 for (let i = 0; i < arr.length - 1; i++) { // jκ°€ λ„λŠ” λ²”μœ„λŠ” ν•˜λ‚˜μ”© κ°μ†Œ for (let j = 0; j < arr.length - (1 + i)..
[JavaScript/section 7] 01 - 선택 μ •λ ¬
Β·
Algorithm/μΈν”„λŸ°(inflearn)
πŸ“Œ 문제 N개의 μˆ«μžκ°€ μž…λ ₯되면 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ •λ ¬ν•˜λŠ” 방법은 선택 정렬이닀. 🧐 선택 μ •λ ¬μ΄λž€ λ¬΄μ—‡μΌκΉŒ? 제자리 μ •λ ¬(in-place sorting) μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜ μž…λ ₯ λ°°μ—΄(μ •λ ¬λ˜μ§€ μ•Šμ€ κ°’λ“€) 이외에 λ‹€λ₯Έ μΆ”κ°€ λ©”λͺ¨λ¦¬λ₯Ό μš”κ΅¬ν•˜μ§€ μ•ŠλŠ” μ •λ ¬ 방법 ν•΄λ‹Ή μˆœμ„œμ— μ›μ†Œλ₯Ό 넣을 μœ„μΉ˜λŠ” 이미 μ •ν•΄μ Έ 있고, μ–΄λ–€ μ›μ†Œλ₯Ό 넣을지 μ„ νƒν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 첫 번째 μˆœμ„œμ—λŠ” 첫 번째 μœ„μΉ˜μ— κ°€μž₯ μ΅œμ†Ÿκ°’μ„ λ„£λŠ”λ‹€. 두 번째 μˆœμ„œμ—λŠ” 두 번째 μœ„μΉ˜μ— 남은 κ°’ μ€‘μ—μ„œμ˜ μ΅œμ†Ÿκ°’μ„ λ„£λŠ”λ‹€. ... μ΄ν•˜ μƒλž΅ κ³Όμ • μ„€λͺ… 주어진 λ°°μ—΄ μ€‘μ—μ„œ μ΅œμ†Ÿκ°’μ„ μ°ΎλŠ”λ‹€. ν•΄λ‹Ή 값을 맨 μ²˜μŒμ— μœ„μΉ˜ν•œ κ°’κ³Ό κ΅μ²΄ν•œλ‹€. 맨 처음 μœ„μΉ˜λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μš”μ†Œλ“€μ„ 같은 λ°©λ²•μœΌλ‘œ κ΅μ²΄ν•œλ‹€. (λ°°μ—΄μ˜ 길이 - 1) 만큼 μœ„μ˜ 1 ~ ..
_μ„±ν˜Έ_
🌱 μ„±ν˜Έ λΈ”λ‘œκ·Έ