[λ°±μ€€/python] 2231번 : λΆ„ν•΄ν•©

2021. 5. 11. 22:48

문제

μ–΄λ–€ μžμ—°μˆ˜ N이 μžˆμ„ λ•Œ, κ·Έ μžμ—°μˆ˜ N의 뢄해합은 Nκ³Ό N을 μ΄λ£¨λŠ” 각 자리수의 합을 μ˜λ―Έν•œλ‹€. μ–΄λ–€ μžμ—°μˆ˜ M의 뢄해합이 N인 경우, M을 N의 μƒμ„±μžλΌ ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 245의 뢄해합은 256(=245+2+4+5)이 λœλ‹€. λ”°λΌμ„œ 245λŠ” 256의 μƒμ„±μžκ°€ λœλ‹€. λ¬Όλ‘ , μ–΄λ–€ μžμ—°μˆ˜μ˜ κ²½μš°μ—λŠ” μƒμ„±μžκ°€ 없을 μˆ˜λ„ μžˆλ‹€. λ°˜λŒ€λ‘œ, μƒμ„±μžκ°€ μ—¬λŸ¬ 개인 μžμ—°μˆ˜λ„ μžˆμ„ 수 μžˆλ‹€.

μžμ—°μˆ˜ N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N의 κ°€μž₯ μž‘μ€ μƒμ„±μžλ₯Ό κ΅¬ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 μžμ—°μˆ˜ N(1 ≤ N ≤ 1,000,000)이 주어진닀.

 

좜λ ₯

첫째 쀄에 닡을 좜λ ₯ν•œλ‹€. μƒμ„±μžκ°€ μ—†λŠ” κ²½μš°μ—λŠ” 0을 좜λ ₯ν•œλ‹€.

 

μ •λ‹΅

import sys
input = sys.stdin.readline

N = int(input())

answer = N // 2

while N > answer:
    sum = answer
    for i in str(answer):
        sum += int(i)
    if sum == N:
        break
    answer += 1

if answer >= N:
    answer = 0

print(answer)

브루트포슀 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μš”λ Ήμ—†μ΄ λͺ¨λ“  경우의 수λ₯Ό λ”°μ Έλ΄μ•Όν•œλ‹€.

경우의 수λ₯Ό μ‘°κΈˆμ΄λΌλ„ 쀄이기 μœ„ν•΄ 1λΆ€ν„° μ‹œμž‘μ΄ μ•„λ‹Œ μž…λ ₯받은 N의 μ ˆλ°˜λΆ€ν„° μ‹œμž‘ν•œλ‹€.

answer에 μƒμ„±μž 후보λ₯Ό μ €μž₯ν•˜κ³  answer이 N보닀 μž‘μ„ λ™μ•ˆ,

sum에 뢄해합을 κ΅¬ν•˜μ—¬ μ €μž₯ν•˜κ³  Nκ³Ό λΉ„κ΅ν•œλ‹€.

 

뢄해합을 ꡬ할 λ•Œ 각 자리수λ₯Ό λ”ν•˜κΈ° μœ„ν•΄ answer을 str둜 λ³€ν™˜ν•˜μ—¬ for문을 μ΄μš©ν•΄ ν•œκΈ€μžμ”© λΆˆλŸ¬μ™€

λ‹€μ‹œ int둜 λ³€ν™˜ν•˜μ—¬ sum에 λ”ν•œλ‹€.

 

while문을 λ‚˜μ™”μ„ λ•Œ answer이 N보닀 ν¬κ±°λ‚˜ κ°™λ‹€λ©΄ μƒμ„±μžκ°€ μ—†λ‹€λŠ” λœ»μ΄λ―€λ‘œ answer에 0을 μ €μž₯ν•œλ‹€.

728x90

BELATED ARTICLES

more