반응형
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
- java
- 트리
- 알고리즘의 조건
- 유한소수 판별하기
- import itertools
- 자료구조
- html
- 태그
- 코딩 테스트
- 프로그래머스
- itertools
- 알고리즘의 조건 5가지
- 스택
- 큐
- 리스트
- 파이썬
- Combination
- 코딩테스트
- python
- 유사코드
- Import
- 과일 장수
- 알고리즘
- list
- 알고리즘 표현
- LV.1
- 자바
- 들여쓰기로 표현한 트리
- 좋은 알고리즘
- Tree
Archives
- Today
- Total
인천의 자유인
[Python] 기사단원의 무기 - 프로그래머스(Lv.1) 본문
728x90
반응형
반응형
나의 문제 풀이
def solution(number, limit, power):
lis = []
for i in range(1,number+1):
count = 0
for j in range(1, int(i**(1/2)) + 1):
if i%j == 0:
count +=1
if j < i//j:
count +=1
if count > limit:
lis.append(power)
else:
lis.append(count)
return sum(lis)
시간 복잡도가 문제였던것 같습니다. 일반적으로 약수 구하는 공식을 썼을 경우에는 코드 실행부분은 통과해도 수가 굉장히 많이 커지면 런타임 에러로 통과를 할 수 없습니다. 그래서 약수를 더 효율적으로 빠르게 구할 수 있는 방법이 무엇인지 대해 많은 생각하면서 서치도 했었습니다.
이러한 경우에는 약수를 구할 때 제곱근으로 구하면 됬었습니다. 이 공식은 에라토스테네스의 체입니다. 먼저 일반 약수를 구하는 것 처럼 i가 j로 나누어 지면 count를 하면 되고 거기다가 j가 i를 j로 나눈 것이 더 클 경우는 i//j가 약수가 되기 때문에 count를 1씩 증가합니다. 이러한 for문이 끝나고 나면 이젠 빈 리스트 lis에다가 count를 추가해 주면 되는데 만약 count가 limit모다 클 경우에는 power를 추가해 주어야 합니다.
그리고 난후 for문을 완전히 돌리면 lis의 합을 구하면 됩니다.
728x90
반응형
'Python > Python코딩테스트' 카테고리의 다른 글
[Python] 과일 장수 - 프로그래머스(Lv.1) (0) | 2024.07.20 |
---|---|
[Python] 모의고사 - 프로그래머스(Lv.1) (0) | 2024.07.16 |
[Python] 2016년 - 프로그래머스(lv.1) (0) | 2024.07.11 |
[Python] 폰켓몬 - 프로그래머스(Lv.1) (0) | 2024.07.03 |
[Python] 카드 뭉치 - 프로그래머스(Lv.1) (0) | 2024.07.01 |