반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 리트허브 오류
- 배열의 유사도 파이썬
- 리트허브 사용법
- leftJoin
- 프로그래머스 가위바위보 풀이
- 춥고 더운 우리 집
- 개발자 취준
- 프로그래머스 배열 회전시키기
- 춥고더운우리집
- 주니어개발자
- 가위바위보 풀이
- Programmers 배열의 유사도
- 특정문자 제거하기
- 비지니스 레이어
- programmers 배열 회전
- 2-layered architecture
- 슈츠 자막
- 스프링 시스템 구조
- 프레젠테이션 레이어
- 파이썬 컬렉션
- collection python
- 프로그래머스 가위바위보
- 파이썬 특정 문자 제거하기
- 알고리즘
- 프로그래머스 배열의 유사도 파이썬
- 리트허브 커밋
- 프로그래머스 특정 문자 제거하기
- 프로그래머스
- BigO notation
- 공선옥
Archives
- Today
- Total
기억보다 기록을
[Programmers] 합성수 찾기 본문
반응형
Q. 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
Source: https://school.programmers.co.kr/learn/courses/30/lessons/120846
처음 직관적으로 생각한 방법은 n에서 소수의 개수를 빼는 것이었다
-> 전체를 순회하기보다 제곱근+1의 값까지 체크하여 소수여부를 판별한뒤 (성능,속도면에서 전체를 체크하는 것보다 제곱근까지만 체크하는 것이 빠르기 때문)
-> 전체개수에서 소수의 개수를 빼서 리턴하자
import math
def solution(n):
isPrime = 0
for i in range (1, int(math.sqrt(n)) +1):
if n % i != 0:
isPrime += 1
return n-isPrime
당연히.. n에서 소수의 개수를 빼는 것이기 때문에 오답이었다.
그래서 이렇게 작성했다. 제곱근은 math 라이브러리를 사용해도 된다. 근데 이 방법은 이중 for문 사용이라 더 좋은 방법이 있으면 좋겠다는 생각이다
def solution(n):
answer = 0
for i in range(4, n + 1): #1,2,3은 소수이기에 4부터 시작
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
output += 1
break
return answer
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 배열 뒤집기 (0) | 2023.02.16 |
---|---|
[Programmers] 컨트롤 제트 (pop(), append() 사용) (0) | 2023.02.14 |
[Programmers] 문자열 밀기 (리스트 슬라이싱, insert(),pop(), deque , find() 사용별 4가지 답안) (0) | 2023.02.14 |
[Programmers] 외계어 사전 (sorted() 정렬, set 자료구조, if not 사용 답안) (0) | 2023.02.08 |
[Programmers] 영어가 싫어요 (딕셔너리,정규표현식/ replace() 사용별 답안) (0) | 2023.02.08 |