카펫

이민호·2021년 3월 27일

나의 풀이

  • 노란색의 가로의 길이가 x, 세로가 y라고 하면
    카펫의 가로는 x+2, y+2가 된다.

  • 노란색의 가로와 세로의 길이는 yellow의 약수이다.

  • (x+2)*(y+2) = brown + yellow를 만족시킨다.
import math
def solution(brown, yellow):
    #약수 구하기
    for x in range(1,int((math.sqrt(yellow)))+1):
        if yellow % x == 0:
            y = int(yellow / x)
            if (x+2)*(y+2) == (brown + yellow):
                answer = [max((x+2),(y+2)),min((x+2),(y+2))]
                return answer

약수를 구하는 방법은 제곱근을 활용한다.

  • 제곱근 까지만 수를 확인하는 이유:
    예) 16
    1, 2, 4, 8, 16
    제곱근인 4까지만 나누어 보면 4이후의 8과 16은 1과 2로 나눈 몫으로 나오기 때문이다.

제곱근을 구하는 방법:
import math를 활용한다.
math.sqrt(number)를 이용하면 number의 제곱근을 구할 수 있다.

profile
life is fun

0개의 댓글