기사단원의 무기 - Python
2023. 12. 10. 23:09ㆍ공부/📝 프로그래머스
1. 풀이 코드
def solution(number, limit, power):
answer = 0
num_list = [0] * (number + 1)
for i in range(1, number + 1):
for j in range(i, number + 1, i):
num_list[j] += 1
for item in num_list:
if item <= limit:
answer += item
else:
answer += power
return answer
1부터 시작하여 배수가 되는 숫자들을 모두 합산하여 약수 개수의 리스트를 구성했습니다.
2. 다른 사람 풀이 코드
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)])
cf(n) 함수의 설계를 잘 했네요. 이쁘게 한줄 쓰기 코딩을 하기위해 노력한 모습이 보입니다.
3. 틀린 코드
def solution(number, limit, power):
answer = 0
num_list = []
for i in range(1, number + 1):
temp = 1
for j in range(1, i // 2 + 1):
if i % j == 0:
temp += 1
num_list += [temp]
for item in num_list:
if item <= limit:
answer += item
else:
answer += power
return answer
이 코드는 처음에 짠 코드입니다. 시간 초과가 떴기에 푸는 방식을 바꾸었습니다. 지금 생각하니 약수의 범위를 구하는 범위 생각을 잘못했네요.
'공부 > 📝 프로그래머스' 카테고리의 다른 글
실패율 - Python (0) | 2023.12.13 |
---|---|
덧칠하기 - Python (0) | 2023.12.11 |
[PCCE 기출문제] 1번 / 출력 - Python (0) | 2023.12.10 |
소수 찾기 - Python (0) | 2023.12.10 |
소수 만들기 - Python (0) | 2023.12.09 |