week1-2
[์ค๋์ ํ์ต]
1. Greedy ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋
2. '์ฒด์ก๋ณต' ๋ฌธ์ ํ์ด
3. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ถ์ฒ ํ์ต
1. Greedy Algorithm ๊ฐ๋
์ด๋ฆ๊ณผ ๊ฐ์ด ํ์์ค๋ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋์์ ๋์ธ ์ ํ์ง ์ค ํญ์ ๋ ์ข์ ๊ฒ์ ์ ํํด ๋๊ฐ๋๋ค
- ์๊ณ ๋ฆฌ์ฆ ์ค ๊ธฐ๋ณธ์ ํด๋นํฉ๋๋ค. (ํ์ง๋ง ์ฝ๋ค๋ ๊ฒ์ ์๋)
- ํ์ฌ์ ์ต์ ๊ฐ์ด ์ต์ข ์ต์ ๊ฐ์ ์ํฅ์ ์ฃผ์ง ์์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ ๋ฒ ํ ์ ํ์ ์ทจ์ํ ์ ์์ต๋๋ค.
- ๋์ถ ๋ ๊ฐ์ด ํด๋น ๋ฌธ์ ์ ์ต์ ๊ฐ์ธ์ง๋ ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ( ๊ทธ๋์ NP-Hard์์ ์์ฃผ ์ฌ์ฉ ๋จ)
2. ๋ฌธ์ ํ์ด
์์ฝ๊ฒ๋ ๊ณต๊ฐ๋ ๋ฌธ์ ๊ฐ ์๋๋ฏ๋ก ์ด๋ค ๋ฌธ์ ์ธ์ง ์ ์ถํ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ์ด ์์น์ด๋ผ ๋ฌธ์ ์ค๋ช ์ ์์ต๋๋ค.
ํ์ด1
def solution(n, lost, reserve):
u = [1]*(n+2) #๊ตฌํ์ ํธํ๊ฒ ํ๊ธฐ ์ํด 0, n+1๋ฒํธ ๊ณต๊ฐ ์ถ๊ฐ ๋ถ์ฌ
# ์์ด๋ฒ๋ฆฐ ํ์์ ๋ฒํธ์ -1
for i in lost:
u[i] -= 1
# ์ฌ๋ฒ๋ก ๊ฐ์ง ํ์์ ๋ฒํธ์ +1
for i in reserve:
u[i] += 1
for i in range(1, n+1): #1๋ฒ๋ถํฐ n๋ฒ๊น์ง
if u[i] == 2 and u[i-1] == 0: #i๋ฒ์ด 2๊ฐ ๊ฐ์ง๊ณ ์๋๋ฐ ์๋๋ฒํธ ํ์์ ์์ ๋
u[i-1: i+1] = [1, 1]
elif u[i] == 2 and u[i+1] == 0: #i๋ฒ์ด 2๊ฐ ๊ฐ์ง๊ณ ์๋๋ฐ ์๋ฒํธ ํ์์ ์์ ๋
u[i: i+2] = [1, 1]
return n - u.count(0)
ํ์ด2
def solution(n, lost, reserve):
s = set(lost) & set(reserve) #lost์ reserve์ ๊ต์งํฉ
l = set(lost) - s
r = set(reserve) - s
for r in reserve:
if r-1 in l:
l.remove(r-1)
elif r+1 in l:
l.remove(r+1)
return n - len(l)
3. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ถ์ฒ ํ์ต
์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ๋ก ์ ๋ช ํ Ries ๋ง๋ฒ์ ์ํผ๋ง๋ฆฌ์ค ๋ธ๋ก๊ทธ์ ๋๋ค
๋ง์ง๋ง์ ์ถ์ฒ ๋ฐฑ์ค ๋ฌธ์ ํ์ด๋ณด๋ ๊ฒ์ผ๋ก ๊ทธ๋ฆฌ๋๋ฅผ ์ ๋ณตํด๋ด ์๋ค!
๋ธ๋ก๊ทธ์ ์ด์ด์ ์์ ์ถ์ฒ์ ๋๋ค!
<์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค>๋ผ๋ ์ฑ ์ธ๋ฐ์, ์ฒซ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ทธ๋ฆฌ๋๋ฅผ ํ์ตํ๋ ์ฒ์ ์ฝ๋ฉ์ ์ค๋นํ์๋ ๋ถ๋ค์๊ฒ ์ถ์ฒ!
์ฌ๋ฌ ์์ ํ๋งค ์ฌ์ดํธ์์ ํ๋งค ํ๋ฏ๋ก ์๋ ๋งํฌ๋ ์ฐธ๊ณ ๋ง ํด์ฃผ์ธ์!
http://www.yes24.com/Product/Goods/91433923