본문 바로가기
PYTHON

파이썬 프로그래머스 코딩테스트 연습 입문 소인수 분해

by jnhn 2023. 6. 27.
파이썬 프로그래머스 코딩테스트연습 코딩테스트 입문 소인수분해 오답노트

문제 설명:

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

 

오답:

설명: 보시다시피 1을 제외한 모든 약수가 result 안에 들어가 있는 것을 확인할 수 있다. 여기서는 약수가 아니라 소인수분해 즉 소수를 찾아야하기 때문에 result에 담긴 약수들 중에서 소수만 골라내는 코드를 추가하면 될 것 같다. 

정답:

설명: 약수들의 리스트중에서 n미만의 숫자들과 곱했을때 존재하는 즉 소수가아닌 합성수들을 제거해주었다. 그랬더니 모든 테스트 통과!

다른 정답:

if 조건문을 사용하여 n을 d로 나눈 나머지가 0인지 확인, 만약 나머지가 0이라면 n은 d로 나누어 떨어지는 수 따라서 n을 d로 나누고 그 결과를 다시 n에 할당 그리고 d가 answer 리스트에 없는 경우에만 answer에 d를 추가이렇게 함으로써 중복되지 않는 소인수들만 answer에 추가되게 되는코드 만약 나머지가 0이 아니라면 d는 n의 소인수가 아니므로 d를 1 증가시킵니다. 이렇게 함으로써 다음 소수로 넘어가게 됨(chatgpt 참고) while 루프가 끝난 후 answer 리스트가 소인수들로 채워지고, 이를 반환

--

아직 while문을 사용하는 것이 어색해서 이걸로 연습연습