1~10000๊น์ง ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ d(n)ํจ์๋ก ์์ฑ์๋ฅผ ๊ฐ์ง ์
ํ๋๋ฒ๊ฐ ์๋ ์๋ฅผ ๋ง๋ค์ด ์งํฉ์ ๋ฃ๊ณ ,
๋ค์ 1~10000๊น์ง ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ ์
ํ๋๋ฒ๊ฐ ์๋ ์๋ค์ ์งํฉ์ ์๋ ์๋ง ์ถ๋ ฅํด๋ณด์
(๊ทธ ์งํฉ์ ์์ด์ผ ๋ฌธ์ ์์ ์๊ตฌํ๋ "์
ํ๋๋ฒ"๋๊น)
<<<์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๊ตฌํํ์ต๋๋ค (map/strํจ์ ์ฌ์ฉ๋ฒ์ ์ฐธ๊ณ )>>>
https://kbwplace.tistory.com/69
โป ์งํฉ(set())์ ์ ์ฅ๋๋ ๊ฐ๋ค์ ์ค๋ณต์ ์ ๊ฑฐํด์ฃผ๋ฉฐ, ๊ต์งํฉ(&), ํฉ์งํฉ(|),์ฐจ์งํฉ(-) ๋ฑ ๊ตฌํ์ด ๊ฐ๋ฅํจ
์ผ๋ฐ์ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ๋, ์ค๋ณต์ ๊ฑฐ์ฉ์ผ๋ก ์์ฃผ ์ฐ์ด๊ณ ,
๋น๊ตํ ๊ฐ์ด ํด๋น ์งํฉ์ ํฌํจ๋์ด์๋์ง ํ์ธํ๋ ์ฉ๋๋ก๋ ์์ฃผ ์ฐ์
#์์ฑ์ ๋ง๋๋ ํจ์ d(n)
def d(n):
n = n + sum(map(int,str(n)))
return n
#์
ํ๋๋ฒ๊ฐ ์๋ ์๋ค(์์ฑ์๊ฐ ์๋ ์๋ค)์ด ๋ค์ด๊ฐ ์งํฉ
nonSelfNum = set();
#nonSelfNum ์งํฉ์ ๋ค์ด๊ฐ ์๋ค ๋ฃ๊ธฐ (1~10000)
for i in range(1,10001):
nonSelfNum.add(d(i)) #1 ๋ถํฐ 10000๊น์ง dํจ์์ ๋ค์ด๊ฐ ์์ฑ์๋ค ๋ฃ์ (set์ด๋ฏ๋ก ์ค๋ณต์ ๊ฑฐ๋จ)
#์
ํ๋๋ฒ ์ถ๋ ฅํ๊ธฐ
for j in range(1,10001):
if j not in nonSelfNum:
#1๋ถํฐ 10000๊น์ง ์ซ์ ์ค nonSelfNum์ ์ ์ฅ๋ ์์ฑ์๊ฐ ์๋ ์๋ค์ ์ ์ธํ๊ณ ์ถ๋ ฅํจ
print(j)
#str()์ผ๋ก n์ ๋ฌธ์์ด(str)๋ก ์ ํํ๊ณ ,
#map()์ผ๋ก ๊ฐ์ฒด๋ก ๋ถ๋ฆฌํ์ฌ ์ ์ํ(int)์ผ๋ก ๋ณ๊ฒฝํ์ฌ,
#sum()์ผ๋ก ๋ํด์ค
def d(n):
n = n + sum(map(int,str(n)))
return n
ex) d(123)์ ํ ๊ฒฐ๊ณผ
๐๐ป str(123)์ ํตํด '123'์ด ๋๊ณ , map์ผ๋ก intํ์ผ๋ก ๊ฐ์ฒดํํ์ฌ ์ ์ฅ, sum์ผ๋ก ๊ฐ ์๋ฆฟ์ ๋ํด์ค
nonSelfNum = set();
#set()๋ฅผ ์ด์ฉํ๋ฉด ๋น์ด์๋ ์งํฉ์ ์์ฑํ ์ ์์ (์งํฉ์ ์)
#๋ง๋ค์ด๋ ์งํฉ(nonSelfNum)์ ์์ฑ์ ๋ฃ๊ธฐ
for i in range(1,10001):
nonSelfNum.add(d(i))
#1 ๋ถํฐ 10000๊น์ง dํจ์์ ๋ค์ด๊ฐ ์์ฑ์๋ค ๋ฃ์ (set์ด๋ฏ๋ก ์ค๋ณต์ ๊ฑฐ๋จ)
์งํฉ(set)์ ๊ฐ์ ๋ฃ์ ๋ .add()ํจ์ ์ฌ์ฉ
์งํฉ(set)์ ๋ณด์ /์ถ๊ฐ๋ ๊ฐ์ ์๋์ ์ผ๋ก ์ค๋ณต์ ๊ฑฐ๋จ
for j in range(1,10001):
if j not in nonSelfNum:
print(j)
in set / not in set ์ผ๋ก ์งํฉ์ ํด๋น ๊ฐ์ ํฌํจ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์
์ ์์ ์์๋ nonSelfNum์ ํฌํจ๋์ง ์์ ์๊ฐ SelfNum ์ด๋ฏ๋ก,
j not in nonSelfNum๋ฅผ ์ด์ฉํ์ฌ ๋ฏธํฌํจ๋ j๊ฐ๋ง์ ์ถ๋ ฅํ์์ (์ฌ์งํฉ๊ฒ์)
์๋ฆฟ์๋๋ก ์ผ์ด์ค๋ฅผ ๋๋ ์ ๊ฐ์๋ฆฟ์์ n์ ๋ํด์ค
def d(n):
m = 0;
if n < 10 :
m = n+n;
elif n < 100 :
m = n + n//10 + (n-(n//10*10));
elif n < 1000 :
m = n + n//100 + ((n-n//100*100)//10) + (n-(n//10*10));
elif n < 10000 :
m = n + (n//1000) + ((n-n//1000*1000)//100) + ((n-(n//100*100))//10) + (n-(n//10*10));
return m
โ ์๋ฆฟ์๋ง๋ค ์ผ์ด์ค๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ถํ์ํ๊ฒ ์ฝ๋๊ฐ ๊ธธ์ด์ง๐คฆ๐ปโโ๏ธ
๋ถ๋ช
์ ์ฝ๋ ๊ธธ์ด๋ฅผ ์ค์ผ๋งํ ๋ด์ฅํจ์๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ํ๋จํจ
๋ค๋ฅธ ์ ์ /๋ธ๋ก๊ฑฐ๋ค์ ๊ฒ์/์ด๋ํด๋ณธ ๊ฒฐ๊ณผ,
"map()"๊ณผ "str()"๋ก๋ ์ถฉ๋ถํ ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ๋จ
set()
์ ์ด์ฉํ์str()
๊ณผ map()
์ ์ด์ฉํ์