기사단원의 무기

최민수·2023년 2월 28일
0

알고리즘

목록 보기
21/94
import math

# 공약수 개수
def getNums(i):
    tot = 0
    # 쌍이 되는 공약수 찾기
    for item in range(1, math.ceil(math.sqrt(i))):
        if i % item == 0:
            tot += 2
    # 제곱수
    if i / math.sqrt(i) == round(math.sqrt(i)):
        tot += 1

    return tot


def solution(number, limit, power):
    answer = 0
    temp = []

    for i in range(1,number+1):
        temp.append(getNums(i))

    for t in temp:
        if t > limit:
            answer += power
        else:
            answer += t

    return answer
  • 소수 개수 구하는 공식(N=a^x * b^y (a,b는 소수)일 때, (x+1) * (y+1)) 을 먼저 생각했음. 그러나, 시간 초과.
  • 복잡하게 생각하지 말고, 오히려 순회하면서 공약수 개수만 구해주는 것이 더 나은 풀이.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글