def solution(n):
answer = []
num = 2
while num <=n:
if n % num ==0:
answer.append(num)
n = n // num
else:
num +=1
return sorted(set(answer))
🤔 문제 풀이
- 소인수분해니까, n 값이 다 분해될 때까지 반복해야 되잖아요
- 그래서 while문으로 해보았어요
- num = 2
- 오늘 숫자의 공약수에는 1이 들어가 있으니까 2부터 시작했어요!
- while num <=n:
if n % num ==0:
answer.append(num)
n = n // num- num이 n보다 작거나 같을 때까지만 반복하도록 조건을 걸어줬어요
- 만약 n에 num을 나눴을 때 나머지가 0이라면 소인수라는 의미니까 answer에 append 해줄게요
- 그리고 n은 n을 num으로 나누었을 때 몫이 되는 값이에요
- else:
num +=1- 소인수가 아닐 경우 +1을 계속해주면서 while문을 종료해 나갈게요
- return sorted(set(answer))
- 그리고 중복값을 없애줄 set() 함수로 answer을 정리해 주고,
- set() 함수는 순서를 보장해주지 않기 때문에 정렬 함수가 필요해요
- sorted() 함수로 set(answer)을 정렬해 준 값을 return 해주면 문제 해결!
- 그리고 중복값을 없애줄 set() 함수로 answer을 정리해 주고,
실패 흔적들
1트
1트
def solution(n):
answer = []
num = 2
while num <=n:
if n % num ==0:
answer.append(num)
n = n // num
else:
num +=1
return answer
제대로 잘 들어간 거 같긴 해요
근데 중복값이 생기네요 그래서 오류 난 거 같아요
그래서 answer에 있는 중복값들을 set() 함수를 써서 없애줬어요
근데 set() 함수는 중복값은 없애주지만, 순서를 보장해주진 않거든요 🤔
'문제 풀기 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 공 던지기 (1h, len()을 활용한 인덱스 번호 알아내기) (0) | 2025.01.06 |
---|---|
[프로그래머스] 이진수 더하기 (bin(), int(문자열, n진수)) (0) | 2025.01.03 |
[프로그래머스] 컨트롤 제트 (+실패 흔적들, 디테일 놓친 문제) (0) | 2025.01.03 |
[프로그래머스] 7의 개수 (+실패 흔적들, .count()) (0) | 2025.01.02 |
[프로그래머스] 한 번만 등장한 문자 (+실패한 흔적, .count()) (1) | 2025.01.02 |