def solution(lst): max_num = max(lst); print("max_num", max_num) empty_lst = []; for i in range(2, max_num+1): for j in range(len(lst)): if lst[j] % i == 0: if i not in empty_lst: empty_lst.append(i) lst[j] = lst[j] // i; num = 1; for k in (empty_lst + lst): num *= k return num
의도는 위에 그림과 같았으나 실제론 몇개의 문제는 틀렸다. 왜냐하면 나누는 수가 소수여야하기 때문
이 문제를 푸는 방법중 하나는 모든 리스트 중 2개씩 뽑아서 그들의 약수를 구한 후 그 수와 다음수를 다시 반복 하는 식으로 하면 된다고 한다.
'1일 1문제, 프로그래머스' 카테고리의 다른 글
이제는 1주에 1문제 내지 2문제로... ㅠ_ㅠ (0) | 2018.08.21 |
---|---|
2017 팁스타운, 예상대진표 (0) | 2018.08.15 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |
프로그래머스, 레벨3, 가장 긴 펠린드롬 (0) | 2018.07.31 |
프로그래머스, 레벨2) 행렬의 곱셈 (0) | 2018.07.26 |