[프로그래머스] 최대공약수와 최소공배수(Python)

2024. 3. 2. 20:20· 코딩 테스트 준비/프로그래머스
목차
  1. 📝 문제
  2. ✅ 풀이

📝 문제

💡 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요.
배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로
solution(3, 12)는 [3, 12]를 반환해야 합니다.
[제한사항]
- 두 수는 1이상 1000000이하의 자연수입니다.

 

문제링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


✅ 풀이

import math
def solution(n, m):
    answer = []
    ns = []
    ms = []

    for i in range(1, int(math.sqrt(n))+1):
        if n % i == 0 and i not in ns:
            ns.append(i)
            ns.append(n//i)

    for i in range(1, int(math.sqrt(m))+1):
        if m % i == 0 and i not in ms:
            ms.append(i)
            ms.append(m//i)

    li = [k for k in ns if k in ms]
    answer.append(max(li))
    answer.append(n*m//answer[0])

    return answer
💡 처음엔 시간초과가 의식되어서 소인수분해로 접근하는 방법을 이용했는데,
어디선가 반례가 걸리는 것을 해결하지 못해 속는셈치고 일일이 약수를 구했다.
공약수를 따로 모아 최대공약수를 구하고, 최대공약수를 활용해 최소공배수를 구해주었다.
저작자표시 비영리 변경금지 (새창열림)
  1. 📝 문제
  2. ✅ 풀이
'코딩 테스트 준비/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 같은 숫자는 싫어(Python)
  • [프로그래머스] 직사각형 별찍기(Python)
  • [프로그래머스] 행렬의 덧셈(Python)
  • [프로그래머스] 문자열 다루기 기본(Python)
zzzini
zzzini
종착지는 어디인지 모르지만
zzzini
나의 표류일지
zzzini
전체
오늘
어제
  • 분류 전체보기 (307)
    • ASAC 빅데이터 분석가 4기 (44)
      • Python기초 (6)
      • SQL (3)
      • Matplotlib & Seaborn (2)
      • Data Handling (6)
      • Web Crawling (3)
      • Machine Learning (9)
      • Deep Learning (10)
      • 데이터 분석 (1)
      • 기타 (2)
      • 수학 (2)
    • 코딩 테스트 준비 (168)
      • 5정한 (132)
      • 카카오 (14)
      • PCCP & PCCE (3)
      • 프로그래머스 (19)
    • 자격증 (35)
      • AWS CLF-C02 (18)
      • AWS SAA-C03 (1)
      • Tableau Desktop Specialist (5)
      • Tableau Certified Data Anal.. (11)
    • 독서 (17)
    • Tech (23)
      • Tableau (10)
      • AI (4)
      • Flask (1)
      • Node.js (2)
      • Cloud Computing (2)
      • Git & GitHub (1)
      • Notion API (1)
      • Linux (2)
    • Projects (2)
    • 알고리즘 공부 (6)
    • 🎵 (11)

블로그 메뉴

  • 글 쓰기
  • 홈
  • 방명록

공지사항

hELLO · Designed By 정상우.v4.2.1
zzzini
[프로그래머스] 최대공약수와 최소공배수(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.