๐ธ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ์
- ์ฒด์ก๋ณต ์ฌ๋ฒ์ ์์ ๊ธฐ์ค ์, ๋ค๋ก๋ง ๋น๋ ค์ค ์ ์๋ค๋ ๊ฑด ์ ์
- ์ฒด์ก๋ณต ์ฌ๋ฒ์ด ์๋๋ฐ ๋๋ ๋นํ ๊ฒฝ์ฐ๋ฅผ ๋จผ์ ๊ณ ๋ คํ ๊ฒ. ์์ธ ์ฒ๋ฆฌ ๋ฐ์
๐ง Source code
def solution(n, lost, reserve):
''' ํ๋ก๊ทธ๋๋จธ์ค-์ฒด์ก๋ณต ๋ฌธ์ ํ์ด (Greedy)
Notes:
1. ์ฒด์ก๋ณต ์ฌ๋ฒ์ ์์ ๊ธฐ์ค ์, ๋ค๋ก๋ง ๋น๋ ค์ค ์ ์๋ค๋ ๊ฒ ์ฃผ์
2. ์ฒด์ก๋ณต ์ฌ๋ฒ์ด ์๋๋ฐ ๋๋ ๋นํ ๊ฒฝ์ฐ๋ฅผ ๋จผ์ ๊ณ ๋ คํ ๊ฒ. ์์ธ ์ฒ๋ฆฌ ๋ฐ์
Args:
n (int) : ํ์ ์
lost (list) : ์ฒด์ก๋ณต์ ์์ด๋ฒ๋ฆฐ ํ์ ๋ฒํธ๋ฅผ ๋ด์ ๋ฆฌ์คํธ
reserve (list) : ์ฒด์ก๋ณต ์ฌ๋ฒ์ ๊ฐ์ ธ์จ ํ์ ๋ฒํธ๋ฅผ ๋ด์ ๋ฆฌ์คํธ
Returns:
answer (int) : ์ฒด์ก ์์
์ ์ฐธ์ฌํ ์ ์๋ ์ต๋ ํ์ ์
'''
for l in lost:
if l in reserve:
lost.remove(l)
reserve.remove(l)
answer = n - len(lost)
for l in lost:
for r in reserve:
if abs(l-r) <= 1:
answer += 1
reserve.remove(r)
break
return answer
def best_solution(n, lost, reserve):
_reserve = [r for r in reserve if r not in lost]
_lost = [l for l in lost if l not in reserve]
for r in _reserve:
f = r - 1
b = r + 1
if f in _lost:
_lost.remove(f)
elif b in _lost:
_lost.remove(b)
return n - len(_lost)
n = int(input())
lost = list(map(int, input().split()))
reserve = list(map(int, input().split()))
print(solution(n, lost, reserve))
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ํฐ ์ ๋ง๋ค๊ธฐ(Greedy) (0) | 2021.06.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์กฐ์ด์คํฑ (Greedy) (0) | 2021.06.21 |
ํ๋ก๊ทธ๋๋จธ์ค - H-index (0) | 2021.06.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ํฐ ์ (์ ๋ ฌ) (3) | 2021.06.16 |
๊ทธ๋ฆฌ๋ ๋ฌธ์ ํ์ด - ๋ณผ๋ง๊ณต ์ ํํ๊ธฐ (0) | 2021.06.13 |