Programmers / 21.01.12 Carpet

💜 문제 설명

문제설명

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

💜 소스코드

    from statistics import median
def divisor(yellow):
    div = []
    for i in range(1,yellow+1):
        if (yellow % i ==0):
            div.append(i)
    return div
def solution(brown, yellow):
    arr = []
    arr = divisor(yellow)
    total = brown + yellow
    flag = 0
    answer = []
    for i in range((int)(len(arr)/2)+1):
        if flag == 1 :
            break
        width = arr[i] + 2
        length = arr[len(arr)-i-1] + 2
        if (width * length == total):
            answer.append(length) 
            answer.append(width)
            flag = 1         
            break 
    return answer

💜 내 띵킹띵킹

brown 타일은 단지 테두리일 뿐이기 때문에 yellow의 갯수와 배치만 알면 전체 개수를 알게 된다. 그래서 약수로 확인하고, 약수 구해서 배치를 확인한다음에 전체 개수를 파악하면 된다.

❗ 근데 여기서! 생각했던 부분이, 굳이 arr에 저장을 해야하나, 바로 구하는 방법이 있을거 같다는 생각을 했다. 거의 수학문제로 생각하고 풀어야 하는게 맞는거 같다...!! ❗

좋은 웹페이지 즐겨찾기