[프로그래머스]level2-카펫-Python[파이썬]

s2ul3·2022년 9월 21일
0

문제링크

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

문제설명

알고리즘

노란색 격자의 가로가 x, 세로가 y인 경우
--> 갈색격자 수 : (x+2) * 2 + 2 * y

  • ex1)
    노란색 격자의 가로 : 2, 세로 : 1인 경우
    --> 갈색격자 수 : (2+2) * 2 + 2 * 1 = 10
    4 * 3
    1 1 1 1
    1 0 0 1
    1 1 1 1
  • ex2)
    노란색 격자의 가로 : 1, 세로 : 1인 경우
    --> 갈색격자 수 : (1+2) * 2 + 2 * 1 = 8
    3 * 3
    1 1 1
    1 0 1
    1 1 1
  • ex3)
    노란색 격자의 가로 : 6, 세로 : 4인 경우
    --> 갈색격자 수 : (6+2) * 2 + 2 * 4 = 16 + 8 = 24
    8 * 6
    1 1 1 1 1 1 1 1
    1 0 0 0 0 0 0 1
    1 0 0 0 0 0 0 1
    1 0 0 0 0 0 0 1
    1 0 0 0 0 0 0 1
    1 1 1 1 1 1 1 1
def solution(brown, yellow):
    # 노란색 격자 수의 인수 구하기
    for i in range(1, yellow+1):
        if yellow % i == 0: # 나눠떨어진다면
            yellow_x, yellow_y = yellow // i, i
            brown_cnt = (yellow_x+2) * 2 + 2 * yellow_y
            if brown_cnt == brown:
                return [yellow_x+2, yellow_y+2]

profile
statistics & computer science

0개의 댓글