반응형

2024/09/27 2

[TIL] 다이나믹 프로그래밍 Dynamic Programming, DP

다이나믹 프로그래밍 Dynamic Programming, DP복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법 큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다, '기억하며 풀기' 1. 알고리즘 기법문제를 해결하기 위해 사용되는 절차적인 방법 또는 계획2. 알고리즘 설계 기법문제 해결을 위해 알고리즘을 설계하는 방법이나 접근 방식 다이나믹 프로그래밍 사용 조건Overlapping Subproblems 겹치는 부분 문제DP 는 기본적으로 문제를 나누고 그 문제의 결과 값을 재활용해서 전체 답을 구하기 때문에동일한 작은 문제들이 반복하여 나타나는 경우에 사용이 가능하다 Optimal Substructure 최적 부분 구조 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 ..

TIL/Python 2024.09.27

CH03 프로그램의 기계 수준 표현 3.1-3.5

컴퓨터는 하위 동작들을 인코딩한 연속된 바이트인 기계어 코드 machine code 를 실행한다컴파일러는 프로그램 언어의 규칙, 대상 컴퓨터의 인스트럭션 집합, 운영 체제의 관례 등에 따라 기계어 코드를 생성한다어셈블리 코드로 프로그램을 짤 때는 프로그래머가 계산을 하기 위해 사용해야 하는 저급 인스트럭션들을 명시해야 한다 대개의 경우 고급 언어가 제공하는 높은 수준의 추상화를 사용하는 것이 보다 더 생산적이고 안정적이다 어셈블리 코드를 이해하면 1) 컴파일러의 최적화 성능을 알 수 있으며 2) 코드에 내재된 비효율성을 분석할 수 있다 쓰레드 패키지를 사용해서 동시성 프로그램을 작성할 때 어떻게 프로그램의 데이터가 공유되고, 쓰레드들이 이들을 사적 Private 으로 어떻게 유지하고, 공유된 데이터가 정..

반응형