NMF
NMF 음수미포함 행렬분해
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.
문제 설명
문제에서 물품의 수(N)는 최대 100 입니다.
물건 각각에 대하여 물건을 배낭에 넣을지 말지, 모든 경우를 수행한다면, 이 방법의 시간복잡도는 다음과 같습니다.
하지만 이 방법으로는 시간안에 문제를 풀 수 없으므로 다이내믹프로그래밍 방법으로 문제를 풀어봅시다.
d[i][j]를 다음과 같이 표현이 가능합니다. 이 방법의 시간 복잡도는 물건의 수(N), 최대무게(K)에 대하여 다음과 같습니다.
DP 시간복잡도: O(N*K)
d[i(물건)][j(무게)]=(최대 가치)
d[i][j]=d[i-1][j]
d[i][j]=d[i-1][j-w[i]]+v[i]
d[i][j]=max(d[i-1][j],d[i-1][j-w[i]]+v[i])
위의 점화식의 정의에 따라 Bottom-Up 방식으로 코드를 구현하여 보겠습니다.
구현 과정
d = [[0] * (k+1) for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,k+1):
d[i][j]=d[i-1][j]
if j-w[i]>=0:
d[i][j]=max(d[i][j], d[i-1][j-w[i]]+v[i])
print(d[n][k])
Kanpsack algorithm으로 널리알려진 문제입니다.
DP를 배울때 교과서적인 예시로 나오는 문제이므로 익혀두도록 합시다.
전체 구현 코드
import sys
def input(): return sys.stdin.readline().rstrip()
n,k = map(int,input().split())
temp = [list(map(int,input().split())) for _ in range(n)]
w,v = zip(*temp)
w = [0] + list(w)
v = [0] + list(v)
d = [[0] * (k+1) for _ in range(n+1)]
for i in range(1, n+1):
for j in range(1, k+1):
d[i][j] = d[i-1][j]
if j-w[i] >= 0:
d[i][j] = max(d[i][j],d[i-1][j-w[i]]+v[i])
print(d[n][k])
NMF 음수미포함 행렬분해
PCA 주성분 분석(차원 축소)
주요 주제)
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
삼성역량테스트에서 출제되는 코테문제들의 경우 2차원 배열을 특정한 기준을 통해 회전시키는 문제가 자주 출제됩니다.
Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.
f-문자열
Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Component-Driven User Interfaces