๋ฌธ์ :
์ ํ ๋๋ฒ๋ 1949๋ ์ธ๋ ์ํ์ D.R. Kaprekar๊ฐ ์ด๋ฆ ๋ถ์๋ค. ์์ ์ ์ n์ ๋ํด์ d(n)์ n๊ณผ n์ ๊ฐ ์๋ฆฌ์๋ฅผ ๋ํ๋ ํจ์๋ผ๊ณ ์ ์ํ์. ์๋ฅผ ๋ค์ด, d(75) = 75+7+5 = 87์ด๋ค.
์์ ์ ์ n์ด ์ฃผ์ด์ก์ ๋, ์ด ์๋ฅผ ์์ํด์ n, d(n), d(d(n)), d(d(d(n))), ...๊ณผ ๊ฐ์ ๋ฌดํ ์์ด์ ๋ง๋ค ์ ์๋ค.
์๋ฅผ ๋ค์ด, 33์ผ๋ก ์์ํ๋ค๋ฉด ๋ค์ ์๋ 33 + 3 + 3 = 39์ด๊ณ , ๊ทธ ๋ค์ ์๋ 39 + 3 + 9 = 51, ๋ค์ ์๋ 51 + 5 + 1 = 57์ด๋ค. ์ด๋ฐ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์ด์ ๋ง๋ค ์ ์๋ค.
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
n์ d(n)์ ์์ฑ์๋ผ๊ณ ํ๋ค. ์์ ์์ด์์ 33์ 39์ ์์ฑ์์ด๊ณ , 39๋ 51์ ์์ฑ์, 51์ 57์ ์์ฑ์์ด๋ค. ์์ฑ์๊ฐ ํ ๊ฐ๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ๋ ์๋ค. ์๋ฅผ ๋ค์ด, 101์ ์์ฑ์๊ฐ 2๊ฐ(91๊ณผ 100) ์๋ค.
์์ฑ์๊ฐ ์๋ ์ซ์๋ฅผ ์ ํ ๋๋ฒ๋ผ๊ณ ํ๋ค. 100๋ณด๋ค ์์ ์ ํ ๋๋ฒ๋ ์ด 13๊ฐ๊ฐ ์๋ค. 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97
10000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ํ ๋๋ฒ๋ฅผ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐๋ด ํ์ด(์ ๋ต ์ฌ๋ถ O)
not_self_num =[]
def d_n(i):
if(i < 10000):
str_i = str(i)
if(len(str_i) == 1):
next_n = i+i
not_self_num.append(next_n)
elif(len(str_i) == 2):
next_n = i + int(str_i[0])+int(str_i[1])
not_self_num.append(next_n)
elif(len(str_i) == 3):
next_n = i + int(str_i[0])+int(str_i[1]) +int(str_i[2])
not_self_num.append(next_n)
elif(len(str_i)== 4):
next_n = i + int(str_i[0])+int(str_i[1]) +int(str_i[2])+int(str_i[3])
not_self_num.append(next_n)
else:
pass
for i in range(1,10000):
d_n(i)
self_num = []
for i in range(1,10001):
if(i not in not_self_num):
self_num.append(i)
for i in range(len(self_num)):
print(self_num[i])
์๊ฐ๋ณต์ก๋๋ O(n)
์ต๋ 10000์ ์ํ ํ๊ธฐ ๋๋ฌธ์,
1์ด์ ์ ํ์๊ฐ ๊ด์ฐฎ๋ค.
'CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python]๋ฐฑ์ค 3085๋ฒ::์ฌํ ๊ฒ์ (0) | 2021.04.29 |
---|---|
[Python]๋ฐฑ์ค 4344๋ฒ::ํ๊ท ์ ๋๊ฒ ์ง(round ์ "%.3f") (0) | 2021.04.29 |
[์ฝ๋ฉํ ์คํธ ์ค๋น ํ์!]๋ฐฑ์ค์ ํ ๋ ์์์ผํ Python ๋ฌธ๋ฒ! (0) | 2021.04.29 |
[Python]๋ฐฑ์ค 2309๋ฒ::์ผ๊ณฑ๋์์ด (0) | 2021.04.29 |
์๊ณ ๋ฆฌ์ฆ::์๊ฐ๋ณต์ก๋:: ๊ณต๊ฐ๋ณต์ก๋::์์ ํ์ (0) | 2020.10.17 |
๋๊ธ