Dynamic Programming Donghuna Daejeon Samsung Software Membership Republic of Korea 2. Aug. 2012.

Slides:



Advertisements
Similar presentations
Made by 주례 없는 결혼식♥ 대본 사회 : 홍길동.
Advertisements

개인의견 차가있을수있음 훈훈한남자 배우 TOP 5. 5 위는 박보검 웃을때보이는 치명적인 미소 꺄 ~~~ 5위5위.
2 3 4 논산인구(노인인구 비율)는? 논산인구(노인인구 비율)는? 대표적 축제? 대표적 축제? 시의 상징 시조? 시화? 시목? 시의 상징 시조? 시화? 시목? 논산 8경? 논산 8경? 계백장군? 계백장군?
기업 인사담당자가 밝힌 면접 합격 비법 취업포털 사람인 ( 기업 인사담당자 397 명 조사 )
I. 프로그램 소개 – 1) 과정 개설의 배경 취업예정자의 Issue 교육 방향과 컨셉  나의 가치, 나의 강점에 대한 성찰  현재 나의 직무 목표에 대한 성찰 Reflection Job Knowledge ▶ 막연히 계획 또는 구상했던 내 미래 직업과 직무에 대한 마음의.
Korea Trade-Investment Promotion Agency
제 3 호 농촌 어메니티 관광개발 정보 -농어촌체험 ∙ 휴양마을 지정제도- 농 촌 진 흥 청 농촌자원과.
목 차 조사 개요 ………………………………………………………………………… 3
장원인의 친절세상 만들기 밝고 따뜻한 장원인.
15 장. 알고리즘의 설계 알고리즘 설계 학습목표 기본 패턴 패턴의 한계점 일곱 가지 패턴의 알고리즘 설계 기법을 이해한다.
7~9월 프로그램 광산구드림스타트 호 소식지 신체 / 건강 인지/언어 정서/행동
(Introduction to Creative Design)
성공적인 주40시간제 정착을 위한 기업의 대응전략
시작하기 전에…… 그리고 이러한 각각의 상황에 대비하여 생각하고, 준비해 놓은 것이 있는가? 지금 당신은 몇 살인가?
대학 특성화사업 (CK-Ⅰ, CK-Ⅱ) 한국연구재단 학술진흥본부 대학지원팀 대학지원팀.
커뮤니케이션 스킬 UP -전화매너- ..
이 재 호 (Ph. D. in Edu.) 광주교육대학교 윤리교육과 교수
기획서의 조건과 역할 기획서는 아이디어가 장차 창출할 가치를 명확히 보여 주어야 한다. 기획서 채택 가치 창출 체 제 표 현
Multimedia Lab. Introduction
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
신소재연구 1. 신소재 산업 현황 이 윤 기 공과대학 나노·신소재공학부
인성교육중심 수업강화를 위한 관리자 워크숍 강 성 주 한국교원대학교 교육연구원장
대구한의대학교 간호학과 노인요양서비스 전문인력 양성사업단 이 홍 자 교수
IEEE/IET Electronic Library 국립중앙도서관
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
『디지털 경제시대의 경영정보시스템』 김효석 · 홍일유 공저 ⓒ 법문사, 2000
연구기획 및 연구개발 과정에서의 특허정보 활용
CAD/CAM 및 실습(04) 메 카 트 로 닉 스 공 학 부 1. 도면 2. 공구설정 3. NC Data 작성
교세라 아메바 경영 실무세미나 Wisdom21 기업의 채산성 강화를 위한 강사 : 양승경
로얄오키드플러스 회원가입 안내 1. 홈페이지 우측 상단 Royal Orchid Plus Frequent Flyer
국가대표 생애주기교육 프로그램 참여방법 안내
아메바경영의 이해와 실천 Wisdom21 Management Consulting
2.1 재배정 재배정요구등록 재배정승인취소 재배정부서연결 재배정단위업무연결
Korea University of Technology and Education
Amkor Technology Korea
전자기 유도실험 구성원:손재완,변준성,이지홍,김승길.
TPM 과 6σ 의 비교 구 분 TPM 6 시그마 추진방식 사 상 활동 단위 강 점 범 위 Level up 기 법 활동단계
Ch.03 Dynamic Programming (동적 프로그래밍 or 동적 계획법)
삼성의 기업문화 혁신전략 Wisdom21 Management Consulting
Course Guide - Algorithms and Practice -
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
수업 첫 날 교육B 황유미 첫 수업 계획에 대해 알아보도록 하겠습니다..
Introduction to Smart Phone Security
연결링크 이미지를 마일리지샵 내에 기획전으로 제작하여 오픈/노출 사이즈 가로 1000/세로 상관x 배너사이즈 가로 400
장원인의 친절세상 만들기 밝고 따뜻한 장원인.
2d game pRogramming 1차 발표 이재남.
3. 백터해석(Kinematic Analysis using Vector)
e-러닝 활성화를 통한 국가인적자원개발 추진전략
3장 구조적 분석(SSA) 방법론.
장애인단체 간담회 마스터 제목 스타일 편집 마스터 제목 스타일 편집 장애인 단체 간담회 마스터 부제목 스타일 편집
3D 프린팅 프로그래밍 04 – 도형 회전 (하트 열쇠고리 만들기) 강사: 김영준 목원대학교 겸임교수.
연변 IT 교육센터 조선족 IT 전문 인력 양성을 위한 연변과기대.
성립전예산 요구등록 (사업담당자) 사업관리카드 1 2
온라인으로 다전공 신청하는 방법.
2013년도 상반기 고객만족도 조사 결과 보고서
2013년도 하반기 고객만족도 조사 결과 보고서
쇼핑몰기획서 작성자 : 이나경.
온라인으로 다전공 신청하는 방법.
미래를 준비하는 VR 코딩 제품소개서 2019 ㈜헬로앱스 4차산업 시대의 핵심 기술 VR 김영준
브라피팅 메뉴얼 리바이스 바디웨어
온라인으로 다전공 신청하는 방법.
모바일 마이스누앱으로 다전공 신청하는 방법 다전공 신청은 종이신청서 제출 필요 없이 모바일/온라인만으로 신청 가능
1장 듣기 교육론 개괄.
한국전기초자의 경영혁신 Wisdom21 Management Consulting
MANIMAL 과 협상의 기술 TOB-DOWM 협상은 신사들의 게임이 아니다. 3. 협상할 때는 상대편의 눈길을 피하지 말자
KOREA University of TECHnology and Education
CODING SOFTWARE CREATIVE EDUCATION CENTER
저출산 극복을 위한 우리공단의 추진과제 경인 제4권역 Mind up 100분 토론.
3월의 나에게….
Project Presentation Title
Presentation transcript:

Dynamic Programming Donghuna Daejeon Samsung Software Membership Republic of Korea 2. Aug. 2012

DonghunaDynamic Programming2 Donghuna Korea University of Technology and Education

Dynamic Programming3Donghuna “ 아는 만큼 보인다.”

DonghunaDynamic Programming4 Introduction 계단 오르기 거스름돈 문제 Subset 숫자 삼각형 문제 1 문제 2 Outline

Introduction DonghunaDynamic Programming5 “What is DP???”

DonghunaDynamic Programming6 Introduction 1, 2, 3, 4, ….. 이를 식으로 정의 하는 방법 두가지 1. 일반항으로 2. 귀납적으로

DonghunaDynamic Programming7 일반항 귀납적 (base) (memoization)

DonghunaDynamic Programming8 귀납적으로 정의 된 경우 에는 수열이 복잡하더라도 명확하게 나타낼 수 있음 장점 귀납적으로 정의된 경우 Divide and conquer 나 Dynamic programming 으로 구현 가능

DonghunaDynamic Programming9 Divide and conquer 와 Dynamic programming 의 차이점은 ? Divide and conquer 는 쪼개진 부분의 값을 가지고 있지 않다. Dynamic programming 은 쪼개진 부분의 값을 기억해 낸다.

DonghunaDynamic Programming10 재귀 다이나믹 답 ( 재귀함수 ) 베이스 답 ( 점화식 ) 베이스

DonghunaDynamic Programming11 재귀 다이나믹 base

DonghunaDynamic Programming12 물 좋고 정자 좋은 곳은 없다. 속도는 월등히 빠르지만 태초에 메모리를 많이 사용한다는 단점이 있음.

DonghunaDynamic Programming13 계단을 올라갈 때 한번에 한칸 올라가는 방법과 두칸 올라가는 방법이 있다고 가정한 다. 그럼 3 번째 칸에 올라가는 가능한 가지 수는 아래와 같이 3 가지가 있다. 한칸 + 한칸 + 한칸 두칸 + 한칸 한칸 + 두칸 그럼 7 번째 칸에 올라가는 가능한 가지 수는 ? ( 힌트 : 작은 것부터 해결하라 ) 계단 오르기

DonghunaDynamic Programming14

DonghunaDynamic Programming15

DonghunaDynamic Programming16

DonghunaDynamic Programming17 동전의 종류가 1, 5, 10 원 일 때, 동전의 종류가 1, 7, 9 원 일 떄 자판기에서 거스름돈 21 원을 최소 동전 개수로 거슬러 주는 방법 첫 번째 경우에선 액수가 큰 동전부터 10 원 2 개와 1 원 1 개를 주면 된다 두 번째 경우에서 액수가 큰 동전부터 주면 9 원 2 개와 1 원 3 개를 주게 된다. 하지만 답은 7 원 3 개를 줘야 한다. 왜 이런 차이가 나는가 ? 거스름돈 문제

DonghunaDynamic Programming18 동전의 액수 크기대로 정렬했을 때 인접한 두 동전의 액수가 배수가 될 때는 액 수가 큰 동전부터 거슬러주면 된다. 예를 들면 1, 5, 10, 30, 60 하지만 1, 7, 9 에서는 7 과 9 사이에 배수 관계가 아니므로 9 원을 먼저 거슬러 주 는 게 최적의 답이 아닐 수 있다.

DonghunaDynamic Programming19 거스름돈 n 을 최소 동전 개수로 거슬러 주는 문제를 쪼개보자. 점화식을 세워보자

DonghunaDynamic Programming20

DonghunaDynamic Programming21

DonghunaDynamic Programming22 ‘ 거스름돈 문제 ’ 는 ‘ 계단 오르기 문제 ’ 와 근본적으로 같다. 원래 ‘ 거스름돈 문제 ’ 는 동전 종류가 1, 7, 9 원 일 떄 자판기에서 거스름돈 21 원을 최소 동전 개수로 거슬러 주는 방법. 이것을 ‘ 계단 오르기 문제 ’ 로 바꿔보면, 한번에 ‘ 한칸 ’, ‘ 일곱칸 ’, ‘ 아홉칸 ’ 올라가는 방법이 있을 때, 21 번째 칸에 최소한의 계단을 밟고 올라가는 방법

DonghunaDynamic Programming23 “ 주어진 문제가 공식에 적용되는 문제인가 ?” 를 알아내기 어렵다. 쪼개서 작은 것부터 해결. 점화식을 만들면 풀 수 있다.

DonghunaDynamic Programming N 에서 합이 같은 두 집합으로 나누는게 문 제이다. N 이 3 인 경우 다음과 같은 한 가지 방법 이 존재하고 1 2, 3 N 이 7 이면, 4 가지 방법이 있다. 1,6,7 and 2,3,4,5 2,5,7 and 1,3,4,6 3,4,7 and 1,2,5,6 1,2,4,7 and 3,5,6 N 이 주어질 때 합이 같은 두 집합으로 만들 수 있 는 방법의 수를 구하는게 문제이다. 제한 시간은 1 초이다. 입력형식 정수 N( 1 <= N <= 39) 이 입력된다. 출력형식 만들 수 있는 방법의 수를 출력한다. 만들 수 있는 방법이 없으면 0 을 출력한다. 입출력 예 입력 7 출력 4 출처 :usaco Subset

DonghunaDynamic Programming25 ( 예시 ) A = { 1, 2, 3} 집합 A 의 부분 집합 중 원소 3 을 포함하는 부분 집합은 어떻게 구할 수 있을까 요 ? 답 ) A = {1, 2} 의 부분 집합 {} 1 2 1,2 에서 각각에 3 을 더한 4 개가 됩니다. {} ,2 + 3 이 와 같은 방법으로 확장이 이루어 집니다.

DonghunaDynamic Programming26 시작 상태 원소 2 가 적용된 상태 원소 1 이 적용된 상태 반복 적용되는 것을 막기 위해 뒤에서 앞으로 검사 원소 3 을 적용하는 과정

DonghunaDynamic Programming27

탐욕알고리즘 DonghunaDynamic Programming28 은 이제 그만

DonghunaDynamic Programming29 숫자 삼각형이 존재할 때 꼭대기 (top) 에서 아래 (bottom) 로 내려올 때 합이 가장 큰 값을 구하는 게 문제이다. 단, 대각선 오른쪽 혹은 왼쪽으로 갈수 있다 로 내려오는 게 30 으로 가장 큰 합이다 입력 입력의 첫 줄은 층의 수 R (1 <= R <= 1000) 이 주어진다. 다음 줄 부 터는 각 층에 해당 하는 숫자가 주어진다. 각 숫자는 100 보다 크지 않는 양의 정수이다. 출력 오른쪽, 왼쪽 아래 대각선으로 이동하면서 제일 아래층에 도달 할 때 의 합을 출력한다. 입출력 예 입력 출력 30 출처 :ioi 기출 숫자 삼각형

DonghunaDynamic Programming30 0. 그리디로 접근 예를 들어 숫자 삼각형이 아래와 같다면 현재 갈수 있는 곳에서 최선을 택하면 (greedy method) (2+5+3=10) 해서 10 하지만 이 방법은 정답이 아니고 (2+4+5=11) 가 정답입니다.

DonghunaDynamic Programming31 1. top-down 풀이 top-down 방식은 확장 방식을 위에서 아래로 확장해 나가는 방식 입니다. 확장 방식은 step1. 제일 위층만 있는 경우 그냥 2 입니다. step2. 밑에 층을 포함하는 경우 5 는 2 에서, 4 도 2 에서 올수 있는 방법 밖에 없 으므로 7, 7 입니다. step3. 밑에 층을 포함하는 경우 답은 제일 아래층에서의 최대 값 입니다.

DonghunaDynamic Programming32 2. bottom up 풀이 위층에서 아래 층으로 내려올 때는 2 에서 5 를 선택해야 할지, 4 를 선택해야할 지를 결정할 수 없습니다. 하지만 밑에서 위로 접근하면 결정적으로 선택할 수 있습니다.

DonghunaDynamic Programming33 과정을 보면,

DonghunaDynamic Programming34

DonghunaDynamic Programming35 N * N 크기의 맵이 있다. 이 맵에는 미네랄이 군데군데 매장되어 있어서 당신은 SCV 를 이용해 이 미네랄을 채취하려고 한 다. SCV 는 (1,1) 의 위치에서 출발하여 (N,N) 까지 이동하는데, 이 SCV 는 고물이라 오른쪽 또는 아래쪽으로 밖에 움직이지 못 한다. 이 SCV 는 무한한 양의 미네랄을 가지고 있을 수 있다고 가정하자. 이 SCV 를 이용해서 최대한 많이 미네랄을 얻도 록 하는 프로그램을 작성하시오. 입력 방법 첫 줄에는 맵의 크기 N ( 3 <= N <= 100) 이 주어진다. 둘째줄부터는 주어진 지도가 N 줄 만큼 입력된다. ( 단, 0 은 미네랄 없음, 1 은 미네랄 있음을 의미한다.) 출력 방법 SCV 가 채취할 수 있는 최대 미네랄 양을 출력한다. 입출력 예 입력 출력 6 문제 1.

DonghunaDynamic Programming36 1 로 채워진 2*2 이상의 정사각형 수를 찾는 것이 문제이다. 중복이 가능한다. 예를 들어, 크기가 3 인 행열에서 *2 이상인 인 행열의 개수는 2*2 행열 2 개뿐이다. 입력 입력의 첫째 줄은 주어진 정방행렬의 크기 N (2 <= N <= 250) 이 주어진다. 다음 N 줄에는 각 N 개의 0 혹은 1 이 주어진다. 출력 가장 작은 정사각형 부터 정렬해서 출력한다. 각 줄당 첫번째 수 는 정사각형의 크기이고 다음 줄은 개수이다. 만약 존재하는 정사각형이 없으면 0 을 출력한다. 입출력 예 입력 출력 출처 : usaco 문제 2.

DonghunaDynamic Programming37

DonghunaDynamic Programming38 큐 앤 에이