프로그래머스_카펫

맹민재·2022년 10월 17일
0

알고리즘

목록 보기
3/134

처음에 어떤 방식으로 시도해야할지 방향을 잡지 못했는데 인터넷에서 찾아보니 아래와 같은 방식으로 수식으로 접근하면 된다는 것을 알았다.

  1. ab = brown + yellow
  2. (a-2)*(b-2) = yellow
    ab - 2a -2b -4 = yellow
    2a + 2b = ab - yellow +4
    a + b = (brown + 4) // 2

위 두개의 식으로 문제 해결

def solution(brown, yellow):
    answer = []
    a = 3
    flag = True
    while flag:
        for i in range(a+1):
            b = i
            if a + b == (brown + 4) // 2 and a*b == brown + yellow:
                answer = [a, b]
                flag = False
        a += 1
    return answer

카펫의 최소 형태는 3*3이므로 a=3으로 했으며
항상 가로가 더 길거나 같기 때문에 b를 구하기 위한 for문의 range는 a+1까지로 했다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글