Poscat seminar 3-1
-
Upload
hyungyu-shin -
Category
Education
-
view
61 -
download
0
Transcript of Poscat seminar 3-1
![Page 1: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/1.jpg)
POSCAT Seminar 3-1 :Brute Force
yougatup @ POSCAT
1
![Page 2: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/2.jpg)
Topic
Topic today
− Brute Force
• Time Complexity
• Algorithm Design
• Implementation
POSCAT Seminar 1-225 June 2014
yougatup
![Page 3: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/3.jpg)
Brute Force
모든 경우를 고려하여 답을 찾자
− 모든 경우를 고려하는 알고리즘을 생각하고 // Verification
− 그 경우의 수가 실제로 얼마나 되는지를 계산 // Efficiency
가장 기본적인 접근
− 어떤 문제를 받던 가장 먼저 Brute Force하게 접근
− 경우의 수가 충분히 적다면 단순히 Brute Force하게 풀면 된다
− 단순하게 생각 !
POSCAT Seminar 1-325 June 2014
yougatup
![Page 4: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/4.jpg)
Brute Force
Example
N개의 숫자가 주어졌을 때, 연속부분 최대합을 구하라
POSCAT Seminar 1-425 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 5: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/5.jpg)
Brute Force
Example
N개의 숫자가 주어졌을 때, 연속부분 최대합을 구하라
POSCAT Seminar 1-525 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 6: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/6.jpg)
Brute Force
Example
가장 먼저 Brute Force하게 생각을 해 보자
POSCAT Seminar 1-625 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 7: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/7.jpg)
Brute Force
Example
가장 먼저 Brute Force하게 생각을 해 보자
모든 경우를 고려한다는 뜻은 무엇인가?
POSCAT Seminar 1-725 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 8: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/8.jpg)
Brute Force
Example
가장 먼저 Brute Force하게 생각을 해 보자
모든 경우를 고려한다는 뜻은 무엇인가?
모든 연속부분의 합을 구해보고 그 중에 최댓값 선택 !
POSCAT Seminar 1-825 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 9: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/9.jpg)
Brute Force
Example
모든 연속부분의 합은 어떻게 구할 것인가 ?
POSCAT Seminar 1-925 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 10: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/10.jpg)
Brute Force
Example
모든 연속부분의 합은 어떻게 구할 것인가 ?
연속 부분의 시작점과 끝점을 정하면 구간이 정해짐
POSCAT Seminar 1-1025 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 11: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/11.jpg)
Brute Force
Example
모든 연속부분의 합은 어떻게 구할 것인가 ?
연속 부분의 시작점과 끝점을 정하면 구간이 정해짐
가능한 모든 시작점과 끝점을 선택하여 합을 구하면 되는군
POSCAT Seminar 1-1125 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
![Page 12: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/12.jpg)
Brute Force
Example
모든 연속부분의 합은 어떻게 구할 것인가 ?
연속 부분의 시작점과 끝점을 정하면 구간이 정해짐
가능한 모든 시작점과 끝점을 선택하여 합을 구하면 되는군
POSCAT Seminar 1-1225 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
More concretely !
![Page 13: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/13.jpg)
Brute Force
Example
i를 시작점이라 하고, j를 끝점이라 하자
POSCAT Seminar 1-1325 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
i j
![Page 14: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/14.jpg)
Brute Force
Example
i를 시작점이라 하고, j를 끝점이라 하자
모든 가능한 i와 j에 대하여 D[i] ~ D[ j] 의 합을 구하면 됨
POSCAT Seminar 1-1425 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
i j
![Page 15: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/15.jpg)
Brute Force
Example
i를 시작점이라 하고, j를 끝점이라 하자
모든 가능한 i와 j에 대하여 D[i] ~ D[ j] 의 합을 구하면 됨
POSCAT Seminar 1-1525 June 2014
yougatup
2 -4 1 2 -1 3 -7 2 1 -4 -2
i j
GOOD !
![Page 16: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/16.jpg)
Brute Force
POSCAT Seminar 1-1625 June 2014
yougatup
Verification : Is this algorithm true ?
Efficiency : How long does it take ?
![Page 17: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/17.jpg)
Brute Force
POSCAT Seminar 1-1725 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
![Page 18: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/18.jpg)
Brute Force
POSCAT Seminar 1-1825 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?
![Page 19: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/19.jpg)
Rough Criteria
POSCAT Seminar 1-1925 June 2014
yougatup
약 1억 번의 연산이 1초라고 생각
− Time Complexity 를 계산했을 때 ‘1억’이면 대략 1초
− O-notation 자체가 근사이기 때문에 완전히 믿기는 힘듦
− O(𝑛3) VS O(99999999𝑛2)
의심되면 좀 더 정확하게 계산
− Constant factor 까지 좀 더 세밀하게 고려하여 계산
− 어느 정도의 감이 있는 것이 굉장히 중요
보통 의도한 솔루션으로 풀면 ACCEPT
− 계산 결과가 아슬아슬하면 대부분의 경우 방법이 틀림
− 알고 보니 해법 자체가 아슬아슬한 문제라면 굉장히 어려운 문제!!
out of scope
![Page 20: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/20.jpg)
Brute Force
POSCAT Seminar 1-2025 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 100 and Time Limit = 1s
![Page 21: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/21.jpg)
Brute Force
POSCAT Seminar 1-2125 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 100 and Time Limit = 1s
𝑛3 = 1,000,000 ≤ 100,000,000
![Page 22: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/22.jpg)
Brute Force
POSCAT Seminar 1-2225 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 100 and Time Limit = 1s
𝑛3 = 1,000,000 ≤ 100,000,000GOOD!!
![Page 23: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/23.jpg)
Brute Force
POSCAT Seminar 1-2325 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 1000 and Time Limit = 1s
![Page 24: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/24.jpg)
Brute Force
POSCAT Seminar 1-2425 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 1000 and Time Limit = 1s
𝑛3 = 1,000,000,000 > 100,000,000
![Page 25: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/25.jpg)
Brute Force
POSCAT Seminar 1-2525 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 1000 and Time Limit = 1s
𝑛3 = 1,000,000,000 > 100,000,000BAD, this solution is wrong
![Page 26: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/26.jpg)
Brute Force
POSCAT Seminar 1-2625 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
![Page 27: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/27.jpg)
Brute Force
POSCAT Seminar 1-2725 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000
![Page 28: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/28.jpg)
Brute Force
POSCAT Seminar 1-2825 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000
BAD?
![Page 29: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/29.jpg)
Brute Force
POSCAT Seminar 1-2925 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000
BAD?No. 𝑛3 is over-estimated
In fact, It takes less than 𝑛3
2
![Page 30: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/30.jpg)
Brute Force
POSCAT Seminar 1-3025 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3
2= 51,911,500 ≤ 100,000,000
BAD?No. 𝑛3 is over-estimated
In fact, It takes less than 𝑛3
2
![Page 31: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/31.jpg)
Brute Force
POSCAT Seminar 1-3125 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3
2= 51,911,500 ≤ 100,000,000
BAD?No. 𝑛3 is over-estimated
In fact, It takes less than 𝑛3
2
GOOD ENOUGH!
![Page 32: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/32.jpg)
It is hard to calculate perfectly
POSCAT Seminar 1-3225 June 2014
yougatup
완벽하게 계산하는 것은 굉장히 어려움
− 당장 이전 슬라이드의 3중 for문이𝒏𝟑
𝟐보다는 확실히 덜 걸림
− 문제를 많이 풀다가 보면 감이 생깁니다
아슬아슬하면 다른 솔루션을 찾자
− 아까도 이야기 했지만, 아슬아슬하면 솔루션이 틀린 경우
− 다른 방법이 없을지를 생각하는 것이 좋다
out of scope
![Page 33: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/33.jpg)
Brute Force
POSCAT Seminar 1-3325 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000BAD?
![Page 34: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/34.jpg)
Brute Force
POSCAT Seminar 1-3425 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000BAD?Hmm… Is there another solution ?
![Page 35: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/35.jpg)
Brute Force
POSCAT Seminar 1-3525 June 2014
yougatup
Verification : Is this algorithm true ? We consider all the cases
Efficiency : How long does it take ? O(𝑛3)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛3 = 103,823,000 > 100,000,000BAD?Hmm… Is there another solution ?
We can remove this loop !
![Page 36: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/36.jpg)
Brute Force
POSCAT Seminar 1-3625 June 2014
yougatup
Verification : Is this algorithm true ?
Efficiency : How long does it take ?
![Page 37: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/37.jpg)
Brute Force
POSCAT Seminar 1-3725 June 2014
yougatup
Verification : Is this algorithm true ? Still, we consider all the cases
Efficiency : How long does it take ? O(𝑛2)
![Page 38: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/38.jpg)
Brute Force
POSCAT Seminar 1-3825 June 2014
yougatup
Verification : Is this algorithm true ? Still, we consider all the cases
Efficiency : How long does it take ? O(𝑛2)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛2 = 220,900 ≤ 100,000,000
![Page 39: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/39.jpg)
Brute Force
POSCAT Seminar 1-3925 June 2014
yougatup
Verification : Is this algorithm true ? Still, we consider all the cases
Efficiency : How long does it take ? O(𝑛2)
Is this algorithm efficient to solve this problem ?Suppose 𝑛 ≤ 470 and Time Limit = 1s
𝑛2 = 220,900 ≤ 100,000,000
Completely Right !
![Page 40: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/40.jpg)
Brute Force
어떤 문제를 잡건 시작은 Brute Force !!!!!
− 문제를 이해하는 것을 도와주고
− 전체 경우의 수가 얼마나 되는지를 계산하게 하며
− 솔루션의 모양, 특성을 찾는 것을 도와준다
Recursion이 합쳐지면 완벽한 Brute Force
− Backtracking 이 모든 시도를 다 해보는 것
− Recursion 없이는 모든 경우를 탐색하지 못하는 경우가 있습니다
− n개의 숫자 중에서 m개 뽑기 We need 𝑛 for loops
How can you generate 𝑛 for loops ?
POSCAT Seminar 1-4025 June 2014
yougatup
![Page 41: Poscat seminar 3-1](https://reader036.fdocuments.net/reader036/viewer/2022062503/58f0222e1a28ab50208b4631/html5/thumbnails/41.jpg)
Question ?
To-do List
− Basic implementation problems
POSCAT Seminar 1-4125 June 2014
yougatup