Search
Duplicate

숫자 블록

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def maxdivisor(n): if n == 1: return 0 divisors = [] for x in range(1, int(n**0.5) + 1): if n % x == 0: if x <= 1e7: divisors.append(x) if n // x <= 1e7 and n // x != n: divisors.append(n//x) return max(divisors) def solution(begin, end): # 규칙성을 파악해보면, # 배열의 n번째 원소는 자기 자신이 아닌 가장 큰 약수가 됨을 # 알 수 있습니다. # 주의) 10000000까지의 숫자가 적힌 블록들을 이용했으므로, # 자기 자신이 아니면서, 10000000 이하의 가장 큰 약수를 구해야 합니다. answer = [maxdivisor(n) for n in range(begin, end+1)] return answer
Python
복사

출처

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