반응형
문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
더보기

제한사항
- 1 ≤ n ≤ 100
입출력 예

입출력 예 설명
입출력 예 #1
- 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.
입출력 예 #2
- 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.
풀이 #1
def solution(n):
answer = 0
for i in range(4,n+1):
cnt = 0
for j in range(1,i+1):
if i % j == 0 :
cnt += 1
if cnt >= 3:
answer += 1
return answer
풀이 #1 설명
- 자연수 중 약수가 세개 이상인 가장 작은 수 = 4. 따라서 범위를 4부터 시작
- 두번째 반복문으로 i의 약수가 세개 이상인지 확인. 3개 이상이라면 answer에 +1
풀이 #2
def solution(n):
answer = 0
for i in range(4, n + 1):
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
answer += 1
break
return answer
풀이 #2 설명
- 1과 본인을 제외한 하나의 약수만 더 있다면 합성수인 것을 이용한 방법
- range(2, int(i**0.5) +1 ) : 약수는 보통 중간에서 대칭모양인 것을 이용하여, 처음 절반만 for문이 돌아가도록 함
- 1과 본인을 제외한 1개의 약수만 더 있다면 합성수이므로, 약수 하나가 나오면 answer에 +1 후 break
반응형
'Algorithm > programmers(python)' 카테고리의 다른 글
[programmers] 주차 요금 계산, 92341 (1) | 2023.11.28 |
---|---|
[programmers] 2차원으로 만들기, 120842 (1) | 2023.06.01 |
[programmers] 모스부호(1), 120838 (0) | 2023.06.01 |
[programmers] 중복된 문자 제거, 120888 (0) | 2023.06.01 |
[programmers]문자열 정렬하기(2), 120911 (0) | 2023.06.01 |