카테고리 없음
[python][프로그래머스_lv1] 기사단원의 무기 (feat. 공약수)
허니비 honeybee
2023. 3. 31. 01:27
오늘도 효율성은 개나 줘버린 나의 첫 코드
그냥 의식의 흐름대로 짰는데 파이썬 문법 연습한다 생각하고 ㅋㅋㅋ
효율성 테스트에서 실패 ~
넌 왜그렇게 인내심이 없는거니?
def solution(number, limit, power):
#약수 개수 리스트 구하기
li = []
for j in range (1, number+1):
count = 0
for i in range(1, j+1):
if j%i == 0:
count += 1
li.append(count)
#제한보다 큰 것은 바꿔주고 합계 리턴
for i in range(len(li)):
if li[i] > limit:
li[i] = power
return sum(li)
약수의 개수 구하는 부분에서 이중 포문을 쓰면서 시간초과가 된 것 같다
근데 아무리 생각해봐도 코드개선은 못해먹겠어서 그냥 다른 분들의 풀이를 봤음
코드개선이 꼭 필요할까..?
그냥 돌아가기만 하면 된거 아닐ㄲ ㅏ..?
다른 분들의 풀이
공약수를 구하는 방향으로 접근하신 분인데 n의 제곱근까지만 포문을 도는게 포인트같음 !
def cf(n): # 공약수 출력
a = []
for i in range(1,int(n**0.5)+1):
if n%i == 0:
a.append(n//i)
a.append(i)
return len(set(a))
def solution(number, limit, power):
return sum([cf(i) if cf(i)<=limit else power for i in range(1,number+1)])
오늘의 교훈
약수의 개수 구하는 문제 나오면 공약수를 구해보자 ~
728x90