μ μ¬μκ°μ λλμ΄ λ€μ΄, μΌλΆ νμμ΄ μ²΄μ‘볡μ λλλΉνλ€. λ€νν μ¬λ² 체μ‘λ³΅μ΄ μλ νμμ΄ μ΄λ€μκ² μ²΄μ‘볡μ λΉλ €μ£Όλ € νλ€. νμλ€μ λ²νΈλ 체격 μμΌλ‘ λ§€κ²¨μ Έ μμ΄, λ°λ‘ μλ²νΈμ νμμ΄λ λ°λ‘ λ·λ²νΈμ νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μλ€. μλ₯Ό λ€μ΄, 4λ² νμμ 3λ² νμμ΄λ 5λ² νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μλ€. 체μ‘λ³΅μ΄ μμΌλ©΄ μμ μ λ€μ μ μκΈ° λλ¬Έμ 체μ‘볡μ μ μ ν λΉλ € μ΅λν λ§μ νμμ΄ μ²΄μ‘μμ μ λ€μ΄μΌ νλ€. μ 체 νμμ μ n, 체μ‘볡μ λλλΉν νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ lost, μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ reserveκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, 체μ‘μμ μ λ€μ μ μλ νμμ μ΅λκ°μ return νλλ‘ ν¨μλ₯Ό μμ±νλΌ.
def gymsuit(n, lost, reserve):
for r in reserve[:]:
if r in lost:
reserve.remove(r)
lost.remove(r)
for r in reserve:
if not lost:
break
else:
for l in lost:
if abs(l-r) == 1:
lost.remove(l)
break
return n - len(lost)
μ΄λ² λ¬Έμ μλ κΌ μ§κ³ λμ΄κ°μΌ ν ν¨μ μ΄ μλ€.
λ°λ‘ μ¬λ² 체μ‘볡μ κ°μ Έμ¨ νμμ΄ μ²΄μ‘볡μ λλλΉνμ μ μλ€ λ μ μ΄λ€.
μ΄ λΆλΆ λλ¬Έμ μ°μ μ μΌλ‘ μ¬λ² 체μ‘볡μ κ°μ Έμ¨ νμ(r
)μ΄ μ²΄μ‘볡μ λλλΉν νμ 리μ€νΈ(lost
)μ μλμ§ νμΈνκ³ μμ κ²½μ°μλ λ κ°μ 리μ€νΈμμ ν΄λΉ νμμ μ μΈν΄μΌ νλ€.
νμ΄ κ³Όμ μμ νΉλ³νκ² μ΄λ €μ΄ μ μ μμμΌλ μ΄ λ¬Έμ₯ λλ¬Έμ μ’ λ λ€μν ν
μ€νΈ μΌμ΄μ€κ° νμνλ€.
νλ‘κ·Έλλ¨Έμ€μλ ν
μ€νΈ μΌμ΄μ€λ₯Ό ν΅κ³Όνμ§ λͺ»νμ λμλ ν΄λΉ ν
μ€νΈ μΌμ΄μ€λ₯Ό νμΈν μ μλλ‘ λμ΄μμ΄μ μ΄λ€ λΆλΆμμ μλ¬κ° λ¬λμ§ ν΄κ²°νκΈ°κ° νλ€μλ€ γ
γ
κ·Έλμ μ§μ μ¬λ¬ κ°μ§ μΌμ΄μ€λ₯Ό λ§λ€μ΄λ³΄μλ€.
class Test(unittest.TestCase):
def test(self):
self.assertEqual(gymsuit(5, [2, 4], [1, 3, 5]), 5)
self.assertEqual(gymsuit(5, [2, 4], [3]), 4)
self.assertEqual(gymsuit(3, [3], [1]), 2)
self.assertEqual(gymsuit(8, [3, 4, 7], [1, 3, 5, 6]), 8)
self.assertEqual(gymsuit(3, [1, 2], [2, 3]), 2)
self.assertEqual(gymsuit(9, [2, 4, 7, 8], [3, 6, 9]), 8)
self.assertEqual(gymsuit(5, [2, 4], [3, 5]), 5)
def gymsuit(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)
λΉμ·ν λ°©λ²μΌλ‘ νμμΌλ ν¬κ² λ€λ₯Έ μ μ forλ¬Έκ³Ό ifλ¬Έμ ν μ€μ λλ΄λ²λ Έλ€λ μ μ΄λ€. μ΄μ²λΌ μ’ λ νμ΄μ¬μ€λ½κ² 지 μ μλ λ°©ν₯μΌλ‘ μ°μ΅ν΄μΌκ² λ€.