본문 바로가기
코딩테스트

[파이썬] 카펫 [CODING TEST #27]

by ALTERww 2022. 7. 29.
320x100

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

 

yellow가 1 이상이라는 건 가로와 세로의 최소 길이가 3이라는 것을 의미한다. 그리고

  • 가로와 세로의 곱은 직사각형 전체의 넓이
  • (가로 - 2) 와 (세로 - 2)의 곱은 yellow의 넓이

두 넓이조건과 최소 길이가 3임을 이용, 답을 찾을 때까지 while문을 반복한다.

 

def solution(brown, yellow):
    xy = brown + yellow # 넓이
    num = 3 
    while xy//num >= 3: # yellow가 존재하려면 한 변의 길이가 3 이상
        if xy % num == 0 and (xy//num - 2) * (num - 2) == yellow : # 넓이 조건 + yellow 조건 만족 => answer
            temp = xy//num
            if temp > xy//temp: # x가 더 크게
                x = temp
                y = xy//temp
                break
            else:
                y = temp
                x = xy//temp
                break
        num += 1
    answer = [x,y]
    return answer

 

댓글