프론트 개발자를 위한 여정

모든 영역을 안내하는 개발자

메모이제이션 4

[JS] 동적 계획법 (DP)문제 / 중복계산방지, O(n)

🚀 문제n개의 계단을 오를 때, 한 번에 1계단 또는 2계단을 오를 수 있다. 계단을 오르는 방법의 수를 반환하는 함수를 작성하시오.function climbStairs(n) { // 여기에 코드 작성}console.log(climbStairs(5)); // 8🔹 코드function climbStairs(n) { if(n  📌 동적 계획법 (DP)🔎 1️⃣ 문제가 묻는 것동적 계획법(DP)은 복잡한 문제를 여러 개의 작은 문제로 나누어 푸는 알고리즘 설계 기법입니다. 보통 최적화 문제나 계산을 효율적으로 해결해야 할 문제에서 유용하게 사용됩니다. 주로 두 가지 방식인 탑다운(Top-Down) 방식과 바텀업(Bottom-Up) 방식으로 구현할 수 있습니다.✅ 핵심 개념:문제 분할:문제를 더 ..

메모이제이션과 동적 계획법(DP): Top-Down vs Bottom-Up 방식

💡 1. 동적 계획법(DP) 개요동적 계획법(DP)은 문제를 작은 하위 문제로 나누어 해결하는 알고리즘 기법입니다. 반복적인 계산을 피하고 중복 계산을 줄여 성능을 향상시키는 방식입니다.DP에서 중요한 개념은 중복 계산을 방지하는 것과 최적의 해법을 찾는 것입니다.💡 2. 메모이제이션과 DP: 무엇이 다를까?메모이제이션은 동적 계획법의 일종입니다. 구체적으로, 메모이제이션은 Top-Down 방식으로 문제를 해결하며, 계산한 결과를 저장하고 재사용하는 기법입니다. DP의 Bottom-Up 방식은 작은 문제부터 차례대로 해결하여 큰 문제를 풀어가는 방식입니다.  방법 방식 설명메모이제이션Top-Down 방식재귀를 이용하여 큰 문제를 먼저 해결하고, 작은 문제를 나누어 해결. 중복 계산을 줄이기 위해 결..

Algorithm 2025.03.16

[JS] 피보나치 수 반환 / 재귀함수, 반복문, 시간복잡도,공간복잡도 비교

🚀 문제재귀를 사용하여 n번째 피보나치 수를 반환하는 함수를 작성하시오.function fibonacci(n) { // 여기에 코드 작성}console.log(fibonacci(10)); // 55🔹 코드function fibonacci(n) { if (n === 0) return 0; if (n === 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2);}console.log(fibonacci(10)); // 55📌 피보나치 수열 문제🔎 1️⃣ 문제가 묻는 것일반적으로 코딩 테스트에서 피보나치 수열을 반환하는 문제는 다음을 요구할 가능성이 큽니다:✅ 정의:fibonacci(n) 함수는 n번째 피보나치 수를 반환해야 한다.피보나치 ..

메모이제이션(Memoization) vs 반복문 비교

🔥 메모이제이션 vs 반복문, 무엇이 더 효율적일까?프로그래밍에서 성능 최적화는 매우 중요한 요소입니다. 특히 반복적으로 계산해야 하는 문제에서는 어떤 방법을 선택하느냐에 따라 속도와 메모리 사용량이 크게 달라질 수 있어요. 가장 많이 비교되는 기법이 바로 메모이제이션(재귀)과 반복문(반복 구조) 입니다. 그렇다면, 두 방식 중 어떤 것이 더 효율적일까요? 🤔💡 메모이제이션(Memoization)이란?메모이제이션은 이전에 계산한 값을 저장하여 동일한 연산을 반복하지 않도록 하는 기법이에요. 주로 재귀(탑다운 방식)와 함께 사용되며, 동적 계획법(DP)의 핵심 개념 중 하나로 활용됩니다.✔️ 장점: 중복 연산을 방지하여 속도를 향상시킬 수 있음 🚀✔️ 단점: 추가적인 메모리 공간이 필요할 수 있음 ..

Algorithm 2025.03.16