728x90
소인수분해
- 소인수분해 => 어떤 자연수를 소인수들의 곱으로 표현하는 것을 말한다
소인수
- 소인수 => 인수들 중에서 소수인 것(소수 : 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수)
인수
- 인수 => 어떤 수를 곱하기 만으로 표현했을 때 곱해지는 인자들
📚문제
📝풀이
def solution(n):
answer = []
start_num = 2 # 소인수에 1은 포함되지 않으므로 최소 소수인 2부터 시작
while start_num <= n:
if n % start_num == 0:
answer.append(start_num) #12를 예로들면 2로 나누어 떨어지므로 answer에 2 추가하고 2로 나누기
n = n // start_num #2로 나눈 몫으로 다시 while문 반복
else:
start_num += 1
return list(dict.fromkeys(answer))
구글링하여 참고...
프로그래머스 문제 풀다보면 오랜만에 보는 수학개념들을 공부할 수 있다...^^
여기서 하나 또 새로운 코드를 알았다
마지막에 return 부분에서
return list(dict.fromkeys(answer))
이런 코드를 써주는데
중복을 제거하기위해
일반적으로 set을 사용하는데 그렇게 되면 순서가 무시된다
dict.fromkeys()
를 사용하면 순서도 유지하면서 값을 출력할 수 있다.
+ dictionary형태이므로 마지막에 list()로 감싸주기
728x90
'Python(알고리즘,문제풀이) > 프로그래머스(입문100제)' 카테고리의 다른 글
코딩테스트입문 / 가까운 수 (0) | 2023.07.26 |
---|---|
코딩테스트입문 / 컨트롤제트 (0) | 2023.07.25 |
코딩테스트입문 / 문자열 정렬하기(1) (0) | 2023.07.23 |
코딩테스트입문 / 팩토리얼 (0) | 2023.07.22 |
코딩테스트입문 / 합성수 찾기 (0) | 2023.07.22 |