[알고리즘] 완전탐색 프로그래머스 2단계 - 카펫

minidoo·2020년 9월 19일
0

알고리즘

목록 보기
18/85
post-thumbnail
def solution(brown, yellow):
    
    # 가로 길이: x, 세로 길이: y
    # x * y  = brown + yellow
    # (x-2) * (y-2) = yellow
    
    x = ((4 + brown) + ((4 + brown) ** 2 - 16 * (brown + yellow)) ** 0.5) // 4
    y = (brown + yellow) // x
    
    return [ int(max(x, y)), int(min(x, y)) ]

풀이과정

  1. 가로의 길이를 x, 세로의 길이를 y라 하면 x * y 는 전체 카펫의 갯수와 같다.
  2. 테두리 1줄만 갈색으로 칠해져 있기 때문에 노란색 부분의 가로는 x-2, 세로는 y-2이며 이를 곱하면 노란색 카펫의 갯수와 같다.
  3. 즉, x * y = brown + yellow(x-2) * (y-2) = yellow으로 x, y 값을 구한다.
  4. 값을 구하기 위해선 근의 공식을 기억해야 한다.

0개의 댓글