최대 1 분 소요

문제 링크

내 풀이

def solution(brown, yellow):
    blocks = yellow
    a = 1
    b = 1
    while True:
        b = blocks / a
        if a >= b and b == int(b):
            if a * 2 + b * 2 + 4 == brown:
                return [a+2,b+2]
            else:
                a += 1
                continue
        a += 1

다른 풀이

def solution(brown, yellow):
    answer = []
    total = brown + yellow
    for h in range(3, total + 1):
        if total % h == 0:
            w = total/h
            if (w - 2) * (h - 2) == yellow:
                answer = [w,h]
                break
    return answer

풀이 해석

  • h를 최솟값인 3부터 1씩 증가시키며 약수일경우 if 문을 실행시켰다
  • 해당 if문을 만족할 경우 answer를 도출하였다

배울 점

  • for 문을 활용해 약수 찾기, 약수일 경우에만 조건문 실행

댓글남기기