๐ŸŽฅ

ํƒ‘์ฝ”๋” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณต - 4. ์žฌ๋ฏธ์žˆ๋Š” ์ˆ˜ํ•™

๋ฌธ์ œ

์ˆซ์ž 3๊ณผ 9๋Š” ์žฌ๋ฏธ์žˆ๋Š” ์„ฑ์งˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 3์˜ ๋ฐฐ์ˆ˜์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์€ ๋‹ค๋ฅธ 3์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 118x3=358118x3=358์ด๊ณ  3+5+4=123+5+4=12๋Š” 3์˜ ๋ฐฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 9์˜ ๋ฐฐ์ˆ˜์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์€
๋‹ค๋ฅธ 9์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 75x9=67575x9=675์ด๊ณ  6+7+5=186+7+5=18์€ 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

๋งˆ๋ฌด๋ฆฌ

  • ๋‹จ์ˆœํ•œ ์ „์ฒด ํƒ์ƒ‰ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ƒ…์ƒ…์ด ๋’ค์ง€๋Š” ํƒ์ƒ‰์„ ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค ๊ฐ„๋‹จํ•˜์ง€ ์•Š๊ณ  ์ด ๋ฌธ์ œ๊ฐ€ ์ „์ฒด ํƒ์ƒ‰์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ธ์ง€
    ๋ˆˆ์น˜์ฑ„๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค.
    ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ์ ‘ํ•ด๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
yoon.homme
yoon.homme

๊ธฐ์ˆ ๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ํž˜์ด ์„ธ์ƒ์„ ๋ฐ”๊พผ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

ํŽธ๋ฆฌํ•œ ์„ธ์ƒ์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.