ํ์ฝ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณต - 4. ์ฌ๋ฏธ์๋ ์ํ
๋ฌธ์
์ซ์ 3๊ณผ 9๋ ์ฌ๋ฏธ์๋ ์ฑ์ง์ด ์์ต๋๋ค. 3์ ๋ฐฐ์์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๋ค๋ฅธ 3์ ๋ฐฐ์๊ฐ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ด๊ณ ๋ 3์ ๋ฐฐ์์
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก 9์ ๋ฐฐ์์ ๊ฐ ์๋ฆฟ์์ ํฉ์
๋ค๋ฅธ 9์ ๋ฐฐ์๊ฐ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๊ณ ์ 9์ ๋ฐฐ์์
๋๋ค.
base ์ง๋ฒ์ด ์ฃผ์ด์ก์ ๋ ์ด๋ฌํ ์ฑ์ง์ ๊ฐ์ง ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ชจ๋ ๋ฆฌํดํ์ธ์(0๊ณผ 1์ ์ ์ธ)
์ด๋ค ์๊ฐ ์ด๋ฌํ ์ฑ์ง์ ๊ฐ์ง๋์ง ์๊ณ ์ ๋ชจ๋ ์ซ์์ ๊ณฑ์ ๊ณ ๋ คํ ํ์๋ ์์ต๋๋ค.
๋ง์ฝ 4์๋ฆฌ ๋ฏธ๋ง์ ๊ณฑ์ผ๋ก ์ฑ๋ฆฝ๋๋ฉด ๋ ํฐ ์๋ฆฌ์์๋ ์ฑ๋ฆฝ๋๋ค ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 10์ง์ ์์๋
999๋ณด๋ค ํฐ ์ซ์๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋ฉ๋๋ค.
์ ์
class InterestingDigits:
def digits(self, base):
์ ๋ ฅ
base : 3~30์ ์ ์
์ถ๋ ฅ
์ ์๋ฅผ ๋ด๊ณ ์๋ ๋ฐฐ์ด
IO Example
# Case# 0
base = 10
returns = [3, 9]
# Case# 1
base = 3
returns = [2]
# Case# 2
base = 9
returns = [2, 4, 8]
# Case# 3
base = 26
returns = [5, 25]
# Case# 4
base = 30
returns = [29]
๊ตฌํ
1์ฐจ ์ฝ๋
class InterestingDigits:
def digits(self, base):
ans = []
for n in range(2, base):
ok = True
for k1 in range(base):
for k2 in range(base):
for k3 in range(base):
if (k1 + k2 * base + k3 * base * base) % n == 0 and (k1 + k2 + k3) % n != 0:
# n์ ๋ฐฐ์ ์ซ์๋ก ๊ฐ ์ซ์์ ํฉ์ด n์ ๋ฐฐ์๊ฐ ์๋๋ฉด
# n์ ์ ์ธํฉ๋๋ค.
ok = False
break
if not ok:
break
if not ok:
break
if ok:
ans.append(n)
return ans
2์ฐจ ์ฝ๋
์ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด
์ด๋ฒ ๋ฌธ์ ๊ฐ ์๊ตฌํ๋ ๋ต์ (n-1)๊ณผ ๊ทธ ์ฝ์์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ ๋ต๋ง ๊ตฌํ๋ฉด ๋๋ค.
class InterestingDigits:
def digits(self, base):
ans = []
for i in range(2, base):
if ((base - 1) % i) == 0:
ans.append(i)
return ans
๋ง๋ฌด๋ฆฌ
- ๋จ์ํ ์ ์ฒด ํ์
๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์
์
์ด ๋ค์ง๋ ํ์์ ํ๋ ๊ฒ์ ์ฌ์ค ๊ฐ๋จํ์ง ์๊ณ ์ด ๋ฌธ์ ๊ฐ ์ ์ฒด ํ์์ผ๋ก ํ ์ ์๋ ๋ฌธ์ ์ธ์ง
๋์น์ฑ๊ธฐ ์ฝ์ง ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ๋ง์ด ์ ํด๋ณด๋ฉด์ ์ต์ํด์ง๋ ๊ฒ์ด ์ข๋ค.