호기심 많은 분석가

[프로그래머스] 완전탐색 - 카펫 (Python) 본문

Coding/Coding Test & Algorithm

[프로그래머스] 완전탐색 - 카펫 (Python)

DA Hun 2021. 6. 28. 14:17
 

코딩테스트 연습 - 카펫

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

programmers.co.kr

def solution(brown, yellow):
    answer = []
    by = brown+yellow
    for i in range(1, int(by**0.5)+1) :
        if by%i==0 :
            answer.append([by//i, i])
    return [i for i in answer if (i[0]-2)*(i[1]-2) == yellow][0]

 오랜만에 수학 문제를 만나서 반가웠다. 조금의 센스를 발휘하면 쉽게 해결할 수 있는데, 테두리가 갈색이라 했으므로 전체 도형이 NxM형태라면 노란 격자는 (N-2) x(M-2)의 형태일 수 밖에 없다. (상하좌우로 한 칸씩 줄어듬)

 그리고 가로가 세로보다 크거나 같다고 했으므로, 전체 도형 넓이의 루트까지만 약수를 찾아주면 된다. 그 결과 나온 여러 값들 중 곱했을 때의 값이 yellow의 크기와 동일한 원소를 출력해주면 문제 마무리.