βοΈ λ¬Έμ
κΉννμ μ§κΈ λͺ°λ Spider Solitaire(μ€νμ΄λ μΉ΄λλμ΄)λ₯Ό νκ³ μλ€. ννμ΄λ μ΄ κ²μμ μ΄κΈΈ λλ μμμ§λ§, μ§ λλ μμλ€. λκ΅°κ°μ μμ μ΄ λκ»΄μ§ ννμ΄λ κ²μμ μ€λ¨νκ³ μ½λ©μ νκΈ° μμνλ€. μμ¬μ νΌνλ€κ³ μκ°ν ννμ΄λ λ€μ κ²μμ μΌ°λ€. κ·Έ λ ννμ΄λ μ μ μ½λ©μ νλ μ¬μ΄μ μμ μ κ²μ μ€λ ₯μ΄ λμ λκ² ν₯μλ κ²μ μμλ€.
μ΄μ ννμ΄λ μμΌλ‘μ λͺ¨λ κ²μμμ μ§μ§ μλλ€. νμ§λ§, ννμ΄λ κ²μ κΈ°λ‘μ μμ ν μ μκΈ° λλ¬Έμ, μμ μ λͺ»νλ μμ κΈ°λ‘μ΄ νμ¬ μμ μ μμ²λ μ€λ ₯μ μ¦λͺ νμ§ λͺ»νλ€κ³ μκ°νλ€.
κ²μ κΈ°λ‘μ λ€μκ³Ό κ°μ΄ μκ²Όλ€.
- κ²μ νμ : X
- μ΄κΈ΄ κ²μ : Y (Z%)
- Zλ ννμ΄μ μΉλ₯ μ΄κ³ , μμμ μ λ²λ¦°λ€. μλ₯Ό λ€μ΄, X=53, Y=47μ΄λΌλ©΄, Z=88μ΄λ€.
Xμ Yκ° μ£Όμ΄μ‘μ λ, ννμ΄κ° κ²μμ μ΅μ λͺ λ² λ ν΄μΌ Zκ° λ³νλμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: solved.ac κΈ°μ€ S3
β μμ μκ°: 1μκ° 45λΆ
β κΆμ₯ μκ°: 45λΆ
π‘ νμ΄
1) λ¬Έμ μ ν νμ
μλ ₯μΌλ‘ μ΄λΆ νμ μ νμΈ κ±Έ μ 건 μλκ³ , λ°±μ€μμ μ 곡νλ 'μκ³ λ¦¬μ¦ λΆλ₯'λ₯Ό ν΅ν΄ μ΄λΆ νμ μ νμΈ κ±Έ νμΈν ν νμ΄μ λ€μ΄κ°λ€. λ΄μΌλΆν°λ 5~10λΆ μ λ λ¬Έμ μ νμ΄ λμ§ μ€μ€λ‘ κ³ λ―Όν΄ λ³Έ νμ λ¬Έμ λ₯Ό νμ΄μΌκ² λ€.
νλ€ λ³΄λκΉ [BOJ] 2003λ²: μλ€μ ν© 2 λ¬Έμ μ λΉμ·ν κ² κ°κΈ°λ ν λλμ λ°μλ€.
2) μμ΄λμ΄
β μ΄λΆ νμ μ νμ΄κΈ° λλ¬Έμ κ°μ₯ λ¨Όμ λ μκ°μ start/end/mid λ³μλ₯Ό μ¨μΌκ² λ€κ³ μκ°νλ€. μ΄ λ 'mid' λ³μμ κ°μ (start+end)/2μ΄λ€.
β‘ start λ³μμ μ΄κΈ°κ°μ 1λ‘ μ‘κ³ end λ³μμ μ΄κΈ°κ°μ Xμ μ ν κ°λ³΄λ€ 1 ν° κ°μΌλ‘ μ‘μλ€. end λ³μμ μ΄κΈ°κ°μ μ΄λ κ² μ‘μ 건 λ΄ μ΅κ΄(μ ν λ²μλ³΄λ€ μ¬μ λ‘κ² μ€μ νλ κ²)μ΄λΌ ν° μ΄μ κ° μλ κ²μ μλλ€.
β’ βν΅μ¬β
μλ‘ κ΅¬ν Z κ°κ³Ό κΈ°μ‘΄μ Z κ°μ λΉκ΅ν΄μ μΉλ₯ μ λ³νλ₯Ό μΆμ νλ λΆλΆμ΄ μ΄ λ¬Έμ μ μ΄λΆ νμ μ νμ ν΅μ¬μ΄λΌκ³ μκ°νλ€.
μλ‘μ΄ Z κ°μ΄ κΈ°μ‘΄ Z κ°λ³΄λ€ ν΄ κ²½μ°: μ΅μ κ²μ μλ mid κ°μ΄ λκ³ , κ³μν΄μ μμ κ°μ μ°Ύμκ°μΌ νκΈ° λλ¬Έμ end λ²μλ₯Ό mid-1λ‘ κ°±μ ν΄ νμ λ²μλ₯Ό μ€μ¬μ£Όμλ€.
μλ‘μ΄ Z κ°μ΄ κΈ°μ‘΄ Z κ°λ³΄λ€ μμ κ²½μ°: λ΄κ° μμΌλ‘ μ§μ κ³μ°ν΄ λ³Έ λͺ κ°μ§ μμμμλ κ²μ νμκ° λλ©΄ Z κ°μ΄ μμμ§λ κ²½μ°λ μμμ§λ§ λ¨μν λ΄κ° λ°κ²¬νμ§ λͺ»ν κ²μΌμλ μκΈ° λλ¬Έμ startλ₯Ό mid+1λ‘ κ°±μ ν΄ νμ μμμ μ λ³κ²½ν΄μ£Όμλ€.
β£ λ§μ§λ§μΌλ‘ μ²λ¦¬ν΄μ€ λΆλΆμ -1μ μΆλ ₯ν΄μΌ νλ κ²½μ°μ΄λ€. μ΅μ κ²μ νμλ₯Ό μ μ₯ν λ³μ min_gameμ μ΄κΈ°κ°μ λ§€μ° ν° κ°μΌλ‘ μ€μ νκΈ° λλ¬Έμ μ΄ κ°μ΄ λ°λμ§ μκ³ μ΄κΈ°κ°κ³Ό λκ°μ μνμΌ λ -1μ μΆλ ₯νλλ‘ νλ€.
3) ꡬν
import sys
input = sys.stdin.readline
# X: κ²μ νμ, Y: μ΄κΈ΄ κ²μ, Z: Y/X
X, Y = map(int, input().split())
Z = (Y*100)//X
start = 1
end = 1000000001
min_game = float("inf")
while start <= end:
mid = (start+end)//2
new_Z = ((Y+mid)*100)//(X+mid)
if new_Z > Z:
min_game = mid
end = mid-1
answer = min_game
else:
start = mid+1
if min_game == float("inf"):
print(-1)
else:
print(answer)
4) λ°°μ΄ μ /κΆκΈν μ
β λ°°μ΄ μ
- start, end λ³μλ₯Ό λ΄κ° μνλ λ°©ν₯μΌλ‘ μμ§μ΄λ©΄μ μ΄λΆ νμ μ ν λ¬Έμ μ νμ©νλ λ²
'Problem Solving > [νν΄99] TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
99ν΄λ½ μ½ν μ€ν°λ 6μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.11.03 |
---|---|
99ν΄λ½ μ½ν μ€ν°λ 5μΌμ°¨ TIL / BFS(λλΉ μ°μ νμ) (0) | 2024.11.02 |
99ν΄λ½ μ½ν μ€ν°λ 4μΌμ°¨ TIL / DFS(κΉμ΄ μ°μ νμ) (0) | 2024.10.31 |
99ν΄λ½ μ½ν μ€ν°λ 3μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.30 |
99ν΄λ½ μ½ν μ€ν°λ 2μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.29 |