카펫 (python)

SeoYng·2020년 9월 6일
0

프로그래머스 문제 카펫 - LV2

https://programmers.co.kr/learn/courses/30/lessons/42842
가능한 경우를 모두 확인해보는 완전탐색 문제

👀 깃헙 소스

문제설명

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

입출력 예

brown	yellow	return
10	2	[4, 3]
8	1	[3, 3]
24	24	[8, 6]

솔루션
가능한 yellow의 곱 형태를 모두 구한다.
brown은 가장자리 1줄씩만 있으므로 brown+yellow(전체 격자 수)가
(yellow의 가로+2) * (yellow의 세로+2)와 같은 경우가 정답이다.

# cand -> 곱해서 24가되는 경우
[(24, 1), (12, 2), (8, 3), (6, 4)]

코드

# 파이썬
def solution(brown, yellow):
    cand = [(yellow//i,i) for i in range(1, int(yellow**.5)+1) if yellow % i == 0]
    for m, n in cand:
        if (m+2) * (n+2) == brown+yellow:
            return [m+2, n+2]

핵심 코드

[(yellow//i,i) for i in range(1, int(yellow**.5)+1) if yellow % i == 0]
profile
Junior Web FE Developer

0개의 댓글