Haribo ML, AI, MATH, Algorithm

숫자 블록

2021-03-02
Haribo

def divisor(m) :
    for i in range(2, int(m**0.5)+1) :
        if m%i == 0 and (measure := m//i) <= 10000000 : return measure
    return 1 if m > 1 else 0

def solution(begin, end):
    return [divisor(x) for x in range(begin, end+1)]

알고리즘

m이 어떤 수 n의 배수 일 때, nm의 약수다.

따라서 숫자블록 m에 들어갈 숫자는 m의 약수 중 m제외 가장 큰 수 가 된다. 그리고 숫자 블록은 최대 10,000,000 이므로

block[m] = 10000000 보다작은 m의 약수 중 가장 큰 수

가 된다.

def divisor(m) :
    for i in range(2, int(m**0.5)+1) :
        if m%i == 0 and m//i <= 10000000 : return m//i # 약수(m//i)가 10000000 보다작은지 체크
    return 1 if m > 1 else 0 

def solution(begin, end):
    return [divisor(x) for x in range(begin, end+1)]

이전 포스트 선입 선출 스케줄링

다음 포스트 올바른 괄호의 갯수

Comments

Content