목록dp (60)
N
https://school.programmers.co.kr/learn/courses/30/lessons/138475?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP와 약수의 개수를 구하는 공식을 이용해 문제 풀이. 우선 소수를 판별할 수 있는 에라토스테네스의 체 방식을 이용해 약수의 개수를 구할 수 있다는 것을 떠올렸다. 에라토스테네스의 체를 이용해서 각 수의 배수에 도달하면서 카운팅을 해준다. 카운팅이 끝나면 각 범위 내에서 카운팅이 많은 수를 구한다. 단, 카운팅이 같은 수가 여러개면 가장 작은 수를 구해야 하는..
https://leetcode.com/problems/longest-increasing-subsequence/ Longest Increasing Subsequence - 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 /** * @param {number[]} nums * @return {number} */ var lengthOfLIS = function(nums) { const length = nums.length; const dp = Array.from({le..
https://school.programmers.co.kr/learn/courses/30/lessons/12942 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 백준 문제에도 동일한 유형이 있다. 아래 링크에 설명이 있으니 참고! https://eunchanee.tistory.com/294 (백준 c++)11049 행렬 곱셈 순서 문제 크기가 N×M인 행렬 A와 M×K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N×M×K번이다. 행렬 N개를 곱하는데 필요한 곱셈 연산의 수는 행렬을 곱하는 순서에 따라 달라지게 된다. 예를 들어, A eunchanee.t..
https://leetcode.com/problems/delete-operation-for-two-strings/ Delete Operation for Two Strings - 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 LCS와 DP 를 이용한 문제풀이. 우선 주어진 두 문자열이 같다면 지울 필요가 없기 때문에 0을 바로 리턴한다. 그렇지 않다면 LCS를 확인. 두 문자열 중 길이가 더 긴 문자를 word1에 저장한다. 변수는 word1의 길이와 word2의..
https://leetcode.com/problems/house-robber-ii/ House Robber II - 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 DP 알고리즘. nums의 length만큼 DP 배열을 선언하여 0으로 초기화 한다. DP 배열은 총 2개를 선언하는데, 이는 0번째 집을 털었을 때의 경우 = dp1, 0번째 집을 털지 않았을 경우 = dp2 로 계산하기 위함이다. (0번째 집을 털었을 경우는 마지막 집을 털수 없기 때문) for문은..
https://leetcode.com/problems/house-robber/ House Robber - 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 DP 이용. nums.length만큼 dp 배열을 선언하여 0으로 초기화. dp[0] = nums[0]으로 저장하고 for문으로 1 ~ length만큼 반복한다. 점화식으로는 dp[i] = Math.max(nums[i] + (dp[i - 2] || 0), dp[i - 1])을 구할 수 있다. dp[i - 2] |..
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - 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 var maxProfit = function(prices) { const length = prices.length; let buy = prices[0]; let profit = 0; for(let i = 1; i < length; i++){ bu..
https://leetcode.com/problems/triangle/ Triangle - 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 DP 알고리즘. 삼각형으로 이뤄진 배열에서 최소합을 구하면 된다. 최소합을 구하는 조건은 다음 행의 인접한 두 수 중 더 작은 값을 현재 행 값과 더하면 된다. const minimumTotal = (triangle) => { const length = triangle.length; for(let i = length - 2; ..