NMF
NMF 음수미포함 행렬분해
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
관련 문제)
문제 설명
문제에서 수열의 크기(N)는 최대 10,000 입니다.
DP를 활용하여 문제를 접근할 것이므로 점화식의 정의를 우선 세워봅시다.
그렇다면 d[n]은 마지막 자리에 오는 수가 1,2,3이냐를 기준으로 다음과 같이 표현이 가능합니다.
위의 점화식의 정의에 따라 두가지 방법의 구현 코드를 비교하여 보겠습니다.
구현 과정: 첫 번째 방법
limit=10000+1
d=[0]*limit
d[0]=1
for i in range(limit):
for k in range(1,3+1):
if i-k>=0:
d[i]+=d[i-k]
구현 과정: 두 번째 방법
limit=10000+1
d=[0]*limit
d[0]=1
for k in range(1,3+1):
for i in range(limit):
if i-k>=0:
d[i]+=d[i-k]
두 가지 방법 모두 위에서 정의한 점화식의 규칙을 만족하지만 그 결과는 다르게 나타납니다.
그러나 문제의 조건을 만족하는 방법은 두 번째 방법인 것을 확인 할 수 있습니다.
그 이유는, 두 번째 방법의 경우 1,2,3을 사용하는 반복문을 가장 바깥으로 하여 수의 배열이 오름차순으로 정렬되는 효과를 보이기 때문입니다.
따라서 오름차순으로 정렬됨으로 인해 중복되는 경우가 없이 문제의 조건을 완벽하게 만족하게 됩니다.
이러한 아이디어(?)는 처음에는 생각하기 다소 힘들고 두 가지의 차이점을 머릿속으로 명확하게 구별하는 것은 어렵습니다.
그렇기 때문에, 다양한 DP 유형의 문제(다른 유형과 다르게 DP는 많이 풀어서 경험을 쌓는수 밖에 없는것 같아요 ㅠㅠ)를 풀어보고 구현 과정의 일부분은 머리가 아닌 손으로 적으면서 문제를 푸는 습관을 들여봅시다.
전체 구현 코드
import sys
def input(): return sys.stdin.readline().rstrip()
limit = 10000+1
d = [0]*limit
d[0] = 1
for k in range(1, 4):
for i in range(limit):
if i-k >= 0:
d[i] += d[i-k]
t = int(input())
for _ in range(t):
n = int(input())
print(d[n])
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