몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 2] 숫자 블록 {언어 : Python} [다시 풀어 보기] 본문

알고리즘/다시 풀어 보기

프로그래머스 [Lv. 2] 숫자 블록 {언어 : Python} [다시 풀어 보기]

스위태니 2024. 5. 19. 23:53

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12923?language=python3

 

프로그래머스

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

programmers.co.kr

정답 코드

def solution(begin, end):
    answer = []
    
    def getMaxDivisor(number):
        if number == 1:
            return 0
        max_divisor = 1
        for i in range(2, int(number ** 0.5) + 1):
            if number % i == 0:
                if number // i <= 10**7:
                    return number // i
                max_divisor = i
        return max_divisor
    
    for num in range(begin, end + 1):
        answer.append(getMaxDivisor(num))
    
    return answer

풀이 방법

  • 범위의 숫자의 최대 약수를 구해서 answer에 넣으면 된다.
  • 29를 예로 들면 1 ... 29까지 나눠지는 숫자가 없으므로 1이 된다.
  • 추가로 348을 예로 들면 2로 나눠지고 348을 2로 나누면 174가 되며 174가 최대 약수가 된다.

느낀점

  • 자바스크립트로 꼭 다시 풀어보자