기사단원의 무기 - 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

  이 코드는 처음에 짠 코드입니다. 시간 초과가 떴기에 푸는 방식을 바꾸었습니다. 지금 생각하니 약수의 범위를 구하는 범위 생각을 잘못했네요.


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

실패율 - 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