-
[λ°±μ€] 1951 νμ with PythonPS 2022. 5. 13. 16:32728x90λ°μν
π BOJ 1951 νμ
π‘ 쑰건
N(1 β€ N β€ 2,000,000,000)
κ°λλ€λΌλ κΈμ¨λ₯Ό μ°κΈ° μν΄μλ 3κ°μ νμκ° νμνλ€.
Nμ΄νμ μμ°μλ₯Ό νμλ‘ νννκΈ° μν΄μλ λͺ κ°μ νμκ° νμνμ§ κ΅¬νλ λ¬Έμ 10μ΄νμ μμ°μλ₯Ό νμλ‘ νννλ €λ©΄ 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0 μ΄λ κ² 11κ°μ νμκ° νμνλ€.
첫째 μ€μ νμν νμμ μλ₯Ό 1234567λ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯.
μν μ νμ λ¬Έμ
π₯ μμ€ μ½λ
n = int(input()) s = [0 for i in range(10)] point = 1 while n != 0: while n % 10 != 9: for i in str(n): s[int(i)] += point n -= 1 if n < 10: for i in range(n + 1): s[i] += point s[0] -= point break else: for i in range(10): s[i] += (n // 10 + 1) * point s[0] -= point point *= 10 n //= 10 print(sum(s) % 1234567)
π μμ λ° μ€νκ²°κ³Ό
μμ
10
μ€νκ²°κ³Ό
11
β¨οΈ λ¬Έμ νμ΄
μΌλ¨ λ¨Όμ , Nμ ν¬κΈ°λ₯Ό νμΈν΄λ³΄μ. Nμ΄ λ¬΄λ € 2μ΅μ λμ΄ μ²μ₯μ λ«κ³ 20μ΅μ΄λ€.
1λΆν° NκΉμ§ μ¬λΌκ°λ©΄μ κ° μ«μλ₯Ό μΈμ΄λ³Έλ€λ μμ΄λμ΄μμ λͺ»λ²μ΄λ μ½λλ₯Ό μ§°λ€λ©΄ λ°μ±ν΄μΌνλ©°, λ λ°μ±νκ³ μλ€.0λΆν° 9κΉμ§ λͺ κ°μ μ«μλ₯Ό μ¬μ©νλμ§ μ μ₯ν 리μ€νΈ sλ₯Ό λ§λ λ€.
Nμ΄ 0 μ΄ λ λκΉμ§ λ°λ³΅λ¬Έμ λλ €μ£Όλ©΄λλλ°,
N μ 10μΌλ‘ λλ λλ¨Έμ§κ° 9κ° μλ κ²½μ°, nμ λ¬Έμμ΄λ‘ λ§λ€μ΄ s[ν΄λΉ μ«μ]μ point λ§νΌ μ«μλ₯Ό λν΄μ€λ€.
κ·Έ ν n - 1 μ ν΄μ€λ€. μ΄ μμ μ 10μΌλ‘ λλ λλ¨Έμ§κ° 9κ° λ λκΉμ§ λ°λ³΅νλ€.
μ΄ ν, μλμ λκ°μ§ 쑰건μ λ€μ μ΄ν΄λ³Έλ€.N μ 10μΌλ‘ λλ λλ¨Έμ§κ° 9μ΄λ©° 10λ³΄λ€ μμ κ²½μ°, κ° μ리μ κ°μ point λ§νΌ λλ €μ€λ€ 0μ ν΄λΉνλ μ«μλ pointλ₯Ό λΉΌμ€λ€.
μ΄ μμ μ΄ μλ£λλ©΄ break.N μ 10μΌλ‘ λλ λλ¨Έμ§κ° 9μ΄λ©° 10λ³΄λ€ ν΄ κ²½μ°, sλ₯Ό μννλ©΄μ s[i]μ κ°μ (n // 10 + 1) * point λ§νΌ λλ €μ€λ€.
μ΄ μΈκ°μ§ 쑰건문μ ν΄λΉνλ μμ μ μλ£νκ³ , s[0] - point, pointμ κ°μ * 10, n // 10 μ ν΄μ€λ€.
(3-1) 쑰건μ 1μ μ리 μλ₯Ό 9κ° μλ μλ‘ λ§λ€κΈ° μν΄μ νλ μμ μ΄λ€.
9λ 0~9κΉμ§ νλ²μ© λͺ¨λ μ¬μ©νκΈ° λλ¬Έμ΄λ€.(3-2) 쑰건μ Nμ΄ νμ리 μλ‘ λ¨μ΄μ‘μ λ, μ¬μ©ν 쑰건μ΄λ€. κ΅³μ΄ λ κ³μ°ν νμμμ΄ sμ κ° μμμ pointλ₯Ό λν΄μ£Όλ©΄ λλ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 20114 λ―Έμ λ ΈνΈ with Python (0) 2022.05.15 [λ°±μ€] 18004 From A to B with Python (0) 2022.05.15 [λ°±μ€] 17839 Baba is Rabbit with Python (0) 2022.05.13 [λ°±μ€] 20125 μΏ ν€μ μ 체 μΈ‘μ with Python (0) 2022.05.12 [λ°±μ€] 14562 νκΆμ with Python (0) 2022.05.12