[프로그래머스 / Level 1] 최대공약수와 최소공배수 (파이썬)

2022. 4. 29. 22:26·🎲 알고리즘 공부/프로그래머스

📝 문제

> 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.

 

입출력 예시

 

https://programmers.co.kr/learn/courses/30/lessons/12940

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

 

 

🎨 풀이

💡 첫 번째 시도 = 성공

 

def solution(n, m):
    answer = []
    tmp = 0
    max = 1
    if m < n :
        tmp = n
        n = m
        m = tmp
        
    for i in range(1,n+1):
        if m % i == 0:
            if n % i == 0:  
                max = i
    min = m * n / max
    
    answer.append(max)
    answer.append(min)
    
    return answer

 

> 최소 공배수 = 두 수의 곱 / 최대 공약수 라는 점을 이용한 게 핵심이다.

  - ex ) 12 = 3 * 12 / 3 (테스트 케이스 1번)

 

1. if 문과 tmp를 이용해서 m에 큰 수가 오도록 두 값을 바꿔주거나 유지시킨다.

2. for문을 통해서 m과 n이 모두 나눠지는 i가 있으면 max에 넣는다. (최대 공약수 부분)

 - n이 더 작은 수라 n을 기준으로 for문을 돌림.

3. 맨 위에서 말했던 식을 이용해서 최소 공배수를 구한다.

4. 최대 공약수와 최소 공배수를 순서대로 answer에 append 해준 후 return 한다.

 

끝~

 

 

⭐ 느낀점

 

> 수정해야할 부분이 많은 것 같긴 한데,, 이 문제도 종종 보는 것 같다. 아예 효율적인 방법을 외워도 되지 않을까 싶다. 

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 이상한 문자 만들기 (파이썬)  (0) 2022.05.01
[프로그래머스 / Level 1] 약수의 합 (파이썬)  (0) 2022.04.30
[프로그래머스 / Level 1] 제일 작은 수 제거하기 (파이썬)  (0) 2022.04.28
[프로그래머스 / Level 1] 정수 내림차순으로 배치하기 (파이썬)  (0) 2022.04.27
[프로그래머스 / Level 1] 자연수 뒤집어 배열로 만들기 (파이썬)  (0) 2022.04.26
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 이상한 문자 만들기 (파이썬)
  • [프로그래머스 / Level 1] 약수의 합 (파이썬)
  • [프로그래머스 / Level 1] 제일 작은 수 제거하기 (파이썬)
  • [프로그래머스 / Level 1] 정수 내림차순으로 배치하기 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    코민이
    찬양추천
    연습문제
    오버워치
    til
    6월 목표
    피보나치수
    정보처리기사
    코드업
    codeup
    정처기
    코린이
    컨텐더스
    행렬덧셈
    파이썬
    프로그래머스
    오블완
    백준
    스프링부트
    코테
    nodejs
    티스토리챌린지
    일기
    스프링 부트
    카카오
    50문답
    폰켓몬
    신입일기
    충무로
    BOJ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 1] 최대공약수와 최소공배수 (파이썬)
상단으로

티스토리툴바