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 |
29 | 30 |
Tags
- 백준 스택 시간초과 python
- stdin vs input
- react
- k for k
- 파이썬
- Android
- 알고리즘
- javascript
- nodejs
- C++
- 리액트
- typescript
- 최적화
- CSS
- 프론트엔드
- NPM
- HTML
- firebase
- 안드로이드
- TS
- 백준 스택
- Python
- 코딩테스트
- 스택
- 파이어베이스
- kotlin
- JS
- 타입스크립트
- next Link
- 자바스크립트
Archives
- Today
- Total
sooleeandtomas
[day9] 코딩테스트 알고리즘 - 연습문제 (N개의 최소공배수) python (feat.gcd) 본문
코딩테스트 알고리즘/기타
[day9] 코딩테스트 알고리즘 - 연습문제 (N개의 최소공배수) python (feat.gcd)
sooleeandtomas 2022. 10. 4. 01:31프로그래머스 N개의 최소공배수
나의 풀이
최대곱값 = 최대값을 찾아 +1 씩 곱해줌.
배열을 순회하며 모든 원소가 최대곱값 % i == 0 인 경우를 찾는다. 그때의 최대곱값이 최소공배수.
def solution(arr):
answer = 0
n = 1
while True:
flag = True
maxMulti = max(arr) * n
for i in list(arr):
if maxMulti % i != 0:
flag = False
if flag == False:
n += 1
continue
else:
answer = maxMulti
break
return answer
다른사람의 풀이
다른풀이를 보니 gcd 함수를 적용했다.
def gcd(a, b):
if b == 0:
return a
return gcd(b, a%b)
def nlcm(num):
num.sort()
max_num = num[-1]
temp = 1
for i in range(len(num)):
temp = (num[i] * temp) / (gcd(num[i], temp))
return temp
gcd의 함수의 방식을 살펴보면
(1...n-1) n,의 두 수의 최소 공배수를 찾아준다.
총 4번만 for문을 돌리면 끝이다. gcd안에서도 재귀적으로 함수를 호출하긴 한다.
'코딩테스트 알고리즘 > 기타' 카테고리의 다른 글
[day19] 코딩테스트 알고리즘 - 오픈채팅방 (feat.파이썬 %s %d %f) (0) | 2022.10.18 |
---|---|
[day15] 백준 2588번 곱셈 python (0) | 2022.10.11 |
[day10] 코딩테스트 알고리즘 - 연습문제 정렬 (H-index) python (0) | 2022.10.05 |
[day8] 코드업 2016번: 천단위 구분기호 python(feat.파이썬 range) (0) | 2022.10.03 |
[day7] 코딩테스트 알고리즘 - 연습문제 (멀리뛰기) 피보나치 수열 python 파이썬 (feat.파이썬 다중할당) (0) | 2022.10.02 |
Comments