728x90
N개의 최소공배수
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항
arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.
입출력 예
arr result
[2,6,8,14] 168
[1,2,3] 6
실패 답 1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def solution(arr):
for i in range(len(arr)):
maxBool = False
num = -1
for j in range(arr[i]):
if not arr[i]%(arr[i]-i):
maxBool = True
break
if maxBool:
maxNum = arr[i]-i
answer = 0
for j in range(len(arr)):
answer *= arr[i]
return answer / (maxNum**(len(arr)-1))
|
cs |
실패 답 2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def solution(arr):
answer = 1
arr.sort()
arrSum = sum(arr)
indexNum = 0
answerBool = False
for i in range(arr[0]):
if not arrSum%(arr[0]-i):
indexNum = i
answerBool = True
break
# if answerBool:
for i in range(len(arr)):
answer *= arr[i]
return answer / ((arr[0]-indexNum)**(len(arr)-1))
|
cs |
실패 답 3
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def solution(arr):
answer = 1
arr.sort()
indexNum = 0
breakBool = False
for i in range(arr[0]):
for j in range(len(arr)):
if arr[j]%(arr[0]-i):
# breakBool = True
break
indexNum = i
else:
break
# if breakBool:
# break
for i in range(len(arr)):
answer *= arr[i]
return answer / ((arr[0]-indexNum)**(len(arr)-1))
|
cs |
실패 답 4
|
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
|
def solution(arr):
answer = 1
arr.sort()
indexNum = 0
maxNum = 0
for i in range(arr[0]):
for j in range(len(arr)):
if arr[j]%(arr[0]-i):
break
# indexNum = i
# maxNum = arr[0]-i
else:
maxNum = arr[0]-i
print(maxNum)
break
while len(arr)>=2:
a=arr.pop()
b=arr.pop()
c=a*b//maxNum
print(c)
arr.append(c)
# arr.append(a*b//maxNum)
return arr[0]
# for i in range(len(arr)):
# answer *= arr[i]
# return answer / ((arr[0]-indexNum)**(len(arr)-1))
|
cs |
성공한 내 답
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
def Greatest(a,b):
for i in range(a):
if a%(a-i)+b%(a-i)==0:
return a-i
def solution(arr):
arr.sort()
while len(arr)>=2:
a=arr.pop()
b=arr.pop()
c=a*b//Greatest(a,b)
arr.append(c)
return arr[0]
|
cs |

남의 답
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def solution(arr):
MAX = max(arr)
while True:
cnt = 0
MAX += 1
for a in arr:
if MAX%a == 0:
cnt += 1
if cnt == len(arr):
break
return MAX
|
cs |
1217점 + 4점 -> 1221점
728x90
'Python' 카테고리의 다른 글
| 210715 프로그래머스 코딩 연습 level2 숫자의 표현 (0) | 2021.07.15 |
|---|---|
| 210714 프로그래머스 코딩 연습 level2 124 나라의 숫자 (0) | 2021.07.14 |
| 210710 프로그래머스 코딩 연습 level2 JadenCase 문자열 만들기 (0) | 2021.07.10 |
| 210710 프로그래머스 코딩 연습 level2 최댓값과 최솟값 (0) | 2021.07.10 |
| 210710 프로그래머스 코딩 연습 level2 올바른 괄호 (0) | 2021.07.10 |




최근댓글