์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค. ์์ฑ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
1๋ถํฐ ์ ๋ ฅ ๊ฐ๊น์ง ๋ชจ๋ ์๋ฅผ ํ์ํด์ ๋ถํดํฉ์ด ์ ๋ ฅ ๊ฐ์ ๊ฐ์์ง๋ฉด ์ด ๊ฐ์ ์ถ๋ ฅํ๊ณ
๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ์์ง๋ง ์ ๋ ฅ ๊ฐ๊ณผ ๊ฐ์ ๊ฐ์ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ 0์ ์ถ๋ ฅํ๋ค.
ํด๊ฒฐ ๊ณผ์
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ํน์ ์์ ๋ถํดํฉ์ ๊ตฌํ๋ค.
์ด ๋ถํดํฉ์ด ์ ๋ ฅ ๊ฐ๊ณผ ๊ฐ์์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ณ ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ต์ข ์ฝ๋๋
def main():
num = int(input())
for i in range(1, num+1):
sum_number = i
divide_number = i
while divide_number:
sum_number += divide_number%10
divide_number = divide_number//10
if num == sum_number:
print(i)
return 0
print(0)
if __name__ == "__main__":
main()
1๋ถํฐ ์ ๋ ฅ ๊ฐ(=num)๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
for๋ฌธ ๋ด๋ถ์ while๋ฌธ์ ๋ถํดํฉ์ ๊ตฌํ๊ธฐ ์ํ ๊ณผ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
divide_number๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ while๋ฌธ์ ๋ฐ๋ณตํ๋๋ฐ
divide_number๋ฅผ 10์ผ๋ก ๋๋ ๋๋จธ์ง ์ฆ, ํน์ ์๋ฆฌ์ ๊ฐ์ ๋นผ๋ด๊ณ sum_number์ ๋ํด์ค๋ค.
divide_number๋ฅผ 10์ผ๋ก ๋๋ ์ค์ผ๋ก์จ ์๋ฆฌ๋ฅผ ์ด๋ํด์ค๋ค. (1์ ์๋ฆฌ > 10์ ์๋ฆฌ > ... )
divide_number๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ while๋ฌธ์ ๋ฐ๋ณตํ๊ณ , ์ด ๊ณผ์ ์ค์ num == sum_number ์ธ ๊ฒฝ์ฐ i๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
'โ๏ธ ์ฝํ ์ค๋น > Brute Force' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ธ๋ฃจํธ ํฌ์ค / Python] BOJ 1436 - ์ํ๊ฐ๋ ์ (0) | 2021.01.11 |
---|---|
[๋ธ๋ฃจํธ ํฌ์ค / Python] BOJ 1018 - ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2021.01.11 |
[๋ธ๋ฃจํธ ํฌ์ค / Python] BOJ 2798 - ๋ธ๋์ญ (0) | 2021.01.07 |
[๋ธ๋ฃจํธ ํฌ์ค / Python] BOJ 7568 - ๋ฉ์น (0) | 2020.12.21 |