목차

    Algorithm(알고리즘)/백준

    16_백준 _2609번 파이썬 최대공약수와 최소공배수

    고로케 2021. 6. 20.

    목차

      반응형

      - 최소공약수는 숫자의 약수를 뽑아내서 리스트로 저장하여 각 리스트에서 가장 큰 값을 리턴하게 만들었고
      최대공배수는 그냥 for문으로 입력받은 두 수중 큰 값부터 ~ 둘을 곱한 값 까지 다 돌면서
      입력받은 값으로 동시에 나눠질 때를 리턴 하였다.
      검색해보니 최소 공약수도 for문 안에 if문으로 동시에 나눠질 때 리던하는 방식이 있었다.
      참고 (최대공약수,최소공배수)

       

      • 풀이-1
      # 최대공약수 함수
      def GCD(X, Y):
          if X < Y:
              min = X
          else:
              min = Y
          for i in range(min + 1, 1, -1):
              if X % i == 0 and Y % i == 0:
                  res = i
                  break
          return res
      
      
      # 최소공배수 함수
      def LCM(X, Y):
          if X < Y:
              max = Y
          else:
              max = X
          for i in range(max, (X * Y) + 1):
              if i % X == 0 and i % Y == 0:
                  res = i
                  break
          return res
      • 풀이-2
      # 약수 divisor
      a, b = map(int, input().split())
      
      
      # 약수를 찾아 리스트로 저장
      def divisor(x):
          n = 1
          divisors = []
          while n <= x:
              if x % n == 0:
                  divisors.append(n)
              n += 1
          return divisors
      
      
      a_divisor = divisor(a)
      b_divisor = divisor(b)
      
      
      # 최대 공약수 (greatest common divisor)
      def greatest_common_divisor(list1, list2):
          for i in range(len(list1)):
              if list1[-1 - i] in list2:
                  return list1[-1 - i]
          return -1
      
      
      # 최소 공배수 (Least Common Multiple)
      def least_common_multiple(a, b):
          # for문을 이용한 최소공배수 파이썬 코드
          if a < b:
              max = b
          else:
              max = a
          for i in range(max, (a * b) + 1):
              if i % a == 0 and i % b == 0:
                  return i
      
          return -1
      
      
      # 최대 공약수 출력
      print(greatest_common_divisor(a_divisor, b_divisor))
      # 최소 공배수 출력
      print(least_common_multiple(a, b))
      
      # 입력
      24 18
      # 출력
      6
      72

       

      16_백준 _2609번 파이썬 최대공약수와 최소공배수

       

      반응형

      댓글