1. ๋ฌธ์ ์ค๋ช ๐
๋ฌธ์ ์ค๋ช ์๋ต
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: GREEDY ALGORITHM
Greedy ์๊ณ ๋ฆฌ์ฆ์ ๋งค ์ ํ์ ์๊ฐ์ ๋น์ ํ ์ ์๋ ์ต์ ์ ์ ํ์ ํ๋ ๊ฒ์ด ์ ์ฒด ๋ฌธ์ ์์๋ ์ต์ ์ ํด๋ฅผ ๊ตฌํ๋ ๊ฒ์์ ๊ฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ฌ๊ธฐ์๋ ๋ฏธ์ฌ์ผ์ ๋ฌถ์์ ๋์ง์ ๊ธฐ์ค ์ค๋ฆ ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ , ๋ฏธ์ฌ์ผ ๋ฌถ์์ ์ต๋ํ ๋์ง์ ์์ ์ฐจ๋ก๋๋ก ์๊ฒฉํด ๋๊ฐ๋ฉด ์ต์ํ์ผ๋ก ์๊ฒฉ ๋ฏธ์ฌ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ํด๋น ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ ํจํ๋ค.
- ๋ฏธ์ฌ์ผ์ ๋ง๋๋ฉด ๋ฌด์กฐ๊ฑด ์๊ฒฉํด์ผ ํ๋ค. ์ํ๊ณ ์ง๋์น๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ๋ฐ๋ผ์ ๋ฏธ์ฌ์ผ์ ๋ง๋๋ฉด ์ต๋ํ ๊ฒน์น๊ฒ ์ญ์ ํด์ผ ํ๋ค.
- ํ๋์ ๋ฏธ์ฌ์ผ ๋ฌถ์ A๊ฐ ๋ค๋ฅธ ๋ฏธ์ฌ์ผ ๋ฌถ์๊ณผ ์ต๋ํ ๊ฒน์น๋ ๊ฒฝ์ฐ๋ A์ ๋์ง์ ์์๋ง ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
๋ค์๊ณผ ๊ฐ์ด ํญ๊ฒฉ ๋ฏธ์ฌ์ผ์ด ๋๋ํ ์จ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํด๋น ๊ทธ๋ํ์์ ๋์ง์ ์ ๊ธฐ์ค์ผ๋ก ์ฐจ๋ก๋๋ก ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๋ณด๊ฒ ๋ค. ์ฒซ ๋ฒ์งธ ๋ฌถ์์ ์๊ฒฉํ๋ฉด์ ์ต๋ํ ๋ง์ ๋ฏธ์ฌ์ผ ๋ฌถ์์ ์์ ๋ ๊ฒฝ์ฐ์ ์๋ ๋ฌด์์ธ๊ฐ?
์ต๋ํ ๋ค์์ ์๊ฒฉํ๋ ๊ฒ์ด๋ค. ๋์ง์ ์ ๊ฐ๊ตฌ๊ฐ์ด๋ผ ์๊ฒฉ์ ํฌํจ์ด ์๋๋ ์ฒซ ๋ฌถ์์ 1~4 ๊ตฌ๊ฐ์ด๋ผ ์ณค์ ๋ 3.9 ์ง์ ์์ ์๊ฒฉํ๋ค๊ณ ๋ณด์. ๊ทธ๋ผ ์ด์ 2๊ฐ๊ฐ ์์ด์ง๋ค.
์ด์ ๋์ง์ ์ ๊ธฐ์ค์ผ๋ก ์ ์ผ ์ฐ์ ์ด ๋๋ ๋ฌถ์์ ์ ์ผ ์งง์ ์ ์ผ ๊ฒ์ด๋ค. ํด๋น ๋ฌถ์์ ์ญ์ ํ๋ฉด์ ์ต๋ํ ๊ฒน์น๊ฒ ์ญ์ ํ๋ ค๋ฉด ์ด๋์ ์๊ฒฉํด์ผ ํ๋๊ฐ?
ํด๋น ๋ฌถ์์ ์ ์ผ ๋ค์ด๋ค. ํด๋น ๋ฌถ์์ 4~5๊ตฌ๊ฐ์ด๋ผ ํ์ ๋, ๋ 4.9์์ ์๊ฒฉํ๋ค ์น์ ^^ ๊ทธ๋ฌ๋ฉด ์ด์
์ด๋ ๊ฒ ๋จ๋๋ค. ์ด์ ์ ์ผ ๊ธด ๋ฌถ์์ด ๋ ์ง์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ์ ๋ค์์ผ๋ก ์กฐํํ ๋ฌถ์์ผ ๊ฒ์ด๊ณ , ํด๋น ๋ฌถ์์ ํฌํจํด ์ต๋ํ ๋ง์ ๋ฌถ์์ ์ง์ฐ๋ ค๋ฉด
์ด๋ ๊ฒ ์ง์ฐ๋ฉด ๋๋ค.
์ฌ์ค ํด๋น ํ์ด๋ ๋ฌธ์ ์ ์
์ถ๋ ฅ ์์ ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๊ตฌํํ ๊ฒ์ธ๋ฐ, ๋ฌธ์ ์ ์
์ถ๋ ฅ ์์ ์ค๋ช
๊ณผ ์ง์์ง๋ ์์์ด ๋ค๋ฅด๋ค. ๊ทธ๋ ๋ค! ๋ฌธ์ ์์๋ Greedy ์ธ ๊ฒ์ ์จ๊ธฐ๋ ค๊ณ ์์ ์์๋ง ๊ฐ๋ฅํ ํด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค!! ์ด ์
๋ง๋ค
(1) ๊ฐ๊ตฌ๊ฐ์ ์๊ฒฉ์ด ๊ฑธ์น๋ฉด ํด๋น ๋ฏธ์ฌ์ผ ๋ฌถ์์ ์ ์ธํ๋ ๊ฒ์ ๋ํ ์์ธ์ฒ๋ฆฌ๋ ์ด๋ป๊ฒ ํ์ฃ ? ๐ค
๋๋๊ฒ๋ ํ ํ์ ์๋ค. ๋ฌธ์ ํ์ด์ค๋ช ์์ ๊ทธ๋ฌ๋ฏ์ด x=4์ง์ ์์ ์๊ฒฉํ๋ค๋ฉด '์ฌ์ค 3.9์์ ์๊ฒฉํ์ ใ '๋ก ๋์ฒดํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ํ ์ง์ ์ดํ์ ๊ตฌ๊ฐ์ ๊ฐ์ง ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๋ชจ๋ ์ง์ด๋ค๋ก ์๊ฐํ๋ฉด ๋๋ค.
(2) ํ์ด ์์ฝ
pos
= ์๊ฒฉ์ x ์์น(์ด๊ธฐ๊ฐ 0),targets
๋ ๋์ง์ ๊ธฐ๋ฐ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ,cnt
= ์๊ฒฉ ๋ฏธ์ฌ์ผ์ ์ ํ์targets
์์ ํ๋์ฉ ์กฐํ, ๋ง์ฝpos
<=targets์ ์์ ์ง์
์ด๋ฉดcnt
+1 ์ฌ๋ฆฌ๊ณ pos๋ฅผ ํ ์กฐํ ์ค์ธ targets์ ๋์ง์ ์ผ๋ก ์ฎ๊ธด๋ค.- ๋ง์ง๋ง target๊ฐ๊น์ง 2๋ฒ์ ๋ฐ๋ณตํ๋ค.
2๋ฒ์ด ์๋ฏธํ๋ ๊ฒ์ด ๋ฐ๋ก ์ต๋ํ ๋ค์์ ์๋ ๊ฒ์ด๋ค. ๋ง์ฝ pos
> target์ ์์์ง์
๋ผ๋ฉด ํ ์ง์ ์์ ์๊ฒฉ ์ ๊ฐ์ด ์์ด์ก์ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ๋ ์๊ฒฉ ๋ฏธ์ฌ์ผ ์ ํ์๋ฅผ ์ฆ๊ฐ์ํค์ง ์๊ณ ๊ณ์ ๋์ด๊ฐ๋ค. ์ดํ pos
<= target์ ์์์ง์
์ธ ๊ฐ์ด ๋์จ๋ค๋ฉด ํ ์๊ฒฉ ์์น์์ ์์จ ์ ์๋ ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๋ค ์์ด๋ค๋ ๋ป์ด๋ฏ๋ก, ๋ค์ ์์น๋ก ์ด๋ํ๋ ๊ฒ์ด๋ค.
3. ์ฝ๋ ์๊ฐ ๐
import java.util.*;
class Solution {
public int solution(int[][] targets) {
Arrays.sort(targets, (o1,o2) -> {
if(o1[1] == o2[1]) return o1[0] - o2[0];
return o1[1] - o2[1];
});
int ans = 0;
int pos = 0;
for(int i = 0; i < targets.length; i++){
if(targets[i][0]>= pos){
ans++;
pos = targets[i][1];
}
}
return ans;
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
์ด๋ถ ํ์
๋ฌธ์ ์ธ ์ค ์๊ณ ์ด๋ถ ํ์์ผ๋ก๋ง ์ ๊ทผํ๋ค ๋ณด๋ ๋ฌธ์ ๋ฅผ ํ์ง ๋ชปํ๋ค. ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ๋ค.
- ์ด๋ถ ํ์์ผ๋ก mid๊ฐ์ ์ ํ๋ค.
- mid์์ 0.1 ๋ํ๋ค.
- ๋ณํ๋ mid์์ ์ญ ์๊ฒฉ ํ์ ๋, ์์ด์ง๋ ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
- ํ์ฌ ๊ตฌํ ๋ฌถ์์ ๊ฐ์๊ฐ ์ด์ ๋ฌถ์ ๋ณด๋ค ๋ง์ผ๋ฉด ์ด๋ถ ํ์ ์งํ ์๋๋ฉด ๊ฑฐ๊ธฐ์ ๋๋ด๊ณ ์๊ฒฉ ๋ฏธ์ฌ์ผ ์ ํ ๊ฐ ์ถ๊ฐ
๋ค์ ๋ฐฉ์์๋ 2๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค.
- ์ด์ ๋ฌถ์๋ณด๋ค ํ์ฌ ์์ค ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๊ฐ์๊ฐ ๋ง์์ ๋, ์ด๋๋ก ์ด๋ํ ๊ฒ์ธ๊ฐ? ์ผ์ชฝ์ผ๋ก? ์ค๋ฅธ์ชฝ์ผ๋ก?
- ์ด์ ๋ฌถ์๋ณด๋ค ์๋ค๊ณ ๊ฑฐ๊ธฐ์ ์ด๋ถํ์์ ์ข ๋ฃํ๋ฉด ํ์ฌ ์์ค ๋ฏธ์ฌ์ผ ๋ฌถ์์ ๊ฐ์๊ฐ ๊ณผ์ฐ ์ต์ ์ ํด์ธ๊ฐ? ์๋ง ๋ฐ๋ก๊ฐ ์กด์ฌํ ๋ฏ ํ๋ค.
ํด๋น ๋ฌธ์ ๋ Greedy์ธ ๊ฒ๋ง ์๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ๋ ๋ฌธ์ ์๋๋ฐ, ๋ด๊ฐ ์์ง ๋ฌธ์ ์ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ ์ ํ์ง ๋ชปํ ๊ฒ ๊ฐ๋ค. ์ด๋ ๋ฌธ์ ์ ํด๋นํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ญ์ง ์๋ ์ฒด๋ก ๋ฌธ์ ๋ฅผ ๋งค์ผ ํผ ํ๋จ์ด ์๋๊ฐ ์ถ๋ค. ์ด๋ฅผ ๊ณ ์ณ์ผ ํ๋ค.