๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 5086 - ๋ฐฐ์ˆ˜์™€ ์•ฝ์ˆ˜

by YWTechIT 2021. 6. 16.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 5086 - ๋ฐฐ์ˆ˜์™€ ์•ฝ์ˆ˜

๋ฐฑ์ค€ 5086 - ๋ฐฐ์ˆ˜์™€ ์•ฝ์ˆ˜


โšก๏ธ ๋‚˜์˜ ํ’€์ด

๋ฐฐ์ˆ˜์™€ ์•ฝ์ˆ˜์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฌธ์ œ๋‹ค. ๊ธฐ์ค€์„ ๋„ˆ๋ฌด ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋กœ๋งŒ ์žก์•„์„œ ์ƒ๊ฐ์ด ๊ณ ์ฐฉ๋˜์–ด์žˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜์˜ ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  1. ๋‘ ์ˆ˜๋ฅผ ๋Œ€์†Œ๋น„๊ตํ•œ๋‹ค.
  2. a < b์ผ ๋•Œ๋Š” b๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  a๊ฐ€ b์˜ ์•ฝ์ˆ˜์™€ ๊ฐ™๋‹ค๋ฉด ์•ฝ์ˆ˜(factor)์ด๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ์•˜๋Š”๋ฐ๋„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด neither์ด๋‹ค.
  3. a > b์ผ ๋•Œ๋Š” a๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  b๊ฐ€ a์˜ ์•ฝ์ˆ˜์™€ ๊ฐ™๋‹ค๋ฉด ๋ฐฐ์ˆ˜(multiple)์ด๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ์•˜๋Š”๋ฐ๋„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด neither์ด๋‹ค.
  4. a == b์ธ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

 

์ด๋ ‡๊ฒŒ ์•ˆ ํ•ด๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๋”์šฑ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

  1. a % b == 0์ด๋ฉด a >= b์ด๊ณ  (์ด๋•Œ, a != b), a๋Š” b์˜ ๋ฐฐ์ˆ˜(multiple)๋‹ค.
  2. b % a == 0์ด๋ฉด b >= a์ด๊ณ  (์ด๋•Œ, a != b), a๋Š” b์˜ ์•ฝ์ˆ˜(factor)๋‹ค.

 

# ๋‚˜์˜ ์ฝ”๋“œ 
def check(a, b):
    if a < b:
        for i in range(1, b//2 + 1):
            if not b % i and a == i:
                return 'factor'
        return 'neither'
    else:
        for i in range(1, a//2 + 1):
            if not a % i and i == b:
                return 'multiple'
        return 'neither'

while True:
    a, b = map(int, input().split())
    if a == 0 and b == 0:
        break
    print(check(a, b))
# ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ
while True:
    a, b = map(int, input().split())
    if not a and not b:
        break
    if not a % b:
        print('multiple')
    elif not b % a:
        print('factor')
    else:
        print('neither')
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€