1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42842
2. 풀이
- 전체 직사각형과 노란 직사각형의 가능한 세로 크기를 모두 구한다.
- 하나씩 꺼내보면서 가로와 세로에 각각 -2 된 값보다 작거나 같은 경우(내부에 속하려면 전체 격자 크기의 가로, 세로 크기 -2보다 작거나 같아야 하기 때문)를 구해서 return
import math
def make_grid_num(rec_grid_num, start_idx): # 가능한 직사각형의 세로 크기를 모두 구한다.
sizes = []
half = (int)(math.sqrt(rec_grid_num))
for i in range(start_idx, half + 1):
if (rec_grid_num/i).is_integer():
sizes.append(i)
return sizes
def solution(brown, yellow):
total_grid_num = brown + yellow
brown_case = make_grid_num(total_grid_num, 3)
yellow_case = make_grid_num(yellow, 1)
for b_col in brown_case: # 하나씩 꺼내보면서 가로와 세로에 각각 -2 된 값보다 작거나 같은 경우를 구해서 return
for y_col in yellow_case:
if b_col - 2 >= y_col and (int)(total_grid_num / b_col) - 2 >= (int)(yellow / y_col):
return [(int)(total_grid_num / b_col), b_col]
return -1
PREVIOUS[프로그래머스] 위장 풀이