Save my data

백준 5086 : 배수와 약수 (파이썬) 본문

알고리즘/백준

백준 5086 : 배수와 약수 (파이썬)

양을 좋아하는 문씨 2023. 3. 8. 23:35

간단한 수학 문제이다.

각각 입력 받은 수를 n과 n이라고 했을 때,

 

n를 m으로 나눴을 때 나머지가 있고 m을 n으로 나눴을 때 나머지가 없으면 "factor",

그 반대의 경우는 "multiple",

둘 다 나머지가 있는 경우는 "neither" 로 처리해주었다.

 

이번 문제는 파이썬 클래스의 getter와 setter를 학습하기 위하여 클래스를 선언하여 풀었다.


import sys

class MultiplesAndDivisors:
    def __init__(self):
        self.n = 0
        self.m = 0
    
    @property
    def answer(self):
        return self.__ans
    
    @answer.setter
    def answer(self, value):
        self.__n = value[0]
        self.__m = value[1]
        self.__ans = self.calculate()
    
    def calculate(self):
        self.a = self.__n % self.__m
        self.b = self.__m % self.__n
        if self.a and self.b:
            return "neither"
        elif self.a > self.b:
            return "factor"
        elif self.a < self.b:
            return "multiple"

while 1:
    N, M = map(int, sys.stdin.readline().split())
    if N == 0 and M == 0:
        break
    res = MultiplesAndDivisors()
    res.answer = N, M
    print(res.answer)

웹 개발할때 말고는 안쓰던 클래스를 사용해서 문제들을 풀려고 하니, 간단한 구현조차도 잘 안되는 등 시행착오가 많았다.

틈틈히 이런 식으로 문제들을 풀어야겠다.

Comments