Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 혼공학습단
- 혼공머신
- 삼성SDS Brigthics
- 혼공
- 노코드AI
- 브라이틱스
- 데이터분석
- 포스코 아카데미
- Brigthics를 이용한 분석
- 캐글
- 직원 이직여부
- 모델링
- 팀 분석
- 직원 이직률
- Brightics를 이용한 분석
- Brightics
- Brightics Studio
- 추천시스템
- 개인 의료비 예측
- 혼공머신러닝딥러닝
- 브라이틱스 서포터즈
- Brigthics
- 삼성SDS
- Brigthics Studio
- 삼성 SDS Brigthics
- 영상제작기
- 삼성SDS Brightics
- 포스코 청년
- 삼성 SDS
- 데이터 분석
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 2_N개의 최소공배수(연습문제) 본문
📌문제 유형
연습문제
📌문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌나의 문제풀이
1차 시도
- AttributeError: module 'math' has no attribute 'lcm'
python3.9 버전이 아니므로 작동 안됨
import math
def solution(arr):
return math.lcm(arr)
2차 시도
import math
def solution(arr):
answer, gcd_num = 1, 0
gcds = []
for i in range(len(arr)):
for j in range(i+1, len(arr)):
gcds.append(math.gcd(arr[i], arr[j]))
gcd_num = min(gcds)
for num in arr:
answer *= num//gcd_num
answer *= gcd_num
return answer
3차 시도(다른 사람 풀이)
[프로그래머스][Python] N개의 최소공배수
프로그래머스 'N개의 최소공배수' 문제 풀이
velog.io
def solution(arr):
from math import gcd # 최대공약수를 구하는 gcd() import
answer = arr[0] # answer을 arr[0]으로 초기화
for num in arr: # 반복문을 처음부터 끝까지 돈다.
#1. (arr[0],arr[1])의 최소공배수를 구한 후 answer에 저장
#2. (#1에서 구한 최소공배수, arr[2])의 최소공배수를 구한 후 answer에 저장
#3. 모든 배열을 돌면서 최소공배수를 구하고, 저장하고 하는 방식을 진행
answer = answer*num // gcd(answer, num)
return answer
📌다른사람의 문제풀이
1) gcd 작동을 직접 만든 후 동일한 풀이
def gcd(a, b):
if b == 0:
return a
return gcd(b, a%b)
def nlcm(num):
num.sort()
max_num = num[-1]
# print (num, max_num)
temp = 1
for i in range(len(num)):
# lcm = (a*b) / gcd
# gcd = (a*b) / lcm
temp = (num[i] * temp) / (gcd(num[i], temp))
# print (temp)
return temp
2) reduce 사용
- reduce : 여러개를 대상으로 누적집계 가능
파이썬 reduce 함수 사용법
Engineering Blog by Dale Seo
www.daleseo.com
from functools import reduce
from fractions import gcd
def nlcm(num):
return reduce(lambda a, b : a * b // gcd(a, b), num)
3) 유클리드 호제법 사용
[유클리드 호제법]
두 수 a, b가 있을 때 (a > b)
a % b == 0이면 b가 GCD입니다.
a % b != 0이면 (c = a % b라고 할 때)
b % c를 구해서 0이 나올때까지 반복합니다.
출처 : https://school.programmers.co.kr/questions/26061
# 2개 수의 최소공배수 구하는 함수
def least(a, b):
A, B = a, b
while b > 0:
a, b = b, a % b
GCD = a # 최대공약수
return A * B // greatest
# arr에서 앞 2개씩 접근하면서 최소공배수 갱신
def solution(arr):
arr.sort()
temp = arr[0]
for i in range(0, len(arr)-1):
temp = least(temp, arr[i+1])
return temp
📌리뷰
- 최소공배수 = (a*b) // (두 수의 최소공배수)
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level2_큰 수 만들기(Greedy) (1) | 2022.10.08 |
---|---|
[프로그래머스] Level 2_예상 대진표(2017 팁스타운) (1) | 2022.10.08 |
[프로그래머스] Level 2_구명보트(Greedy) (0) | 2022.10.08 |
[프로그래머스] Level 2_짝지어 제거하기(2017 팁스타운) (0) | 2022.10.06 |
[프로그래머스] Level 2_영어 끝말잇기(Summer/Winter Coding(~2018)) (0) | 2022.10.06 |
Comments