[Python] Programmers LV2 카펫 풀이

지민·2022년 9월 14일
1
post-thumbnail

기본 아이디어 (힌트) 아래쪽에 코드잇음

  1. brown + yellow 한 뒤 for문 돌려서 딱 나누어 떨어지는 친구들을 구한다 (얘들이 이제 가로세로 길이의 경우의 수임)

  2. 어짜피 갈색 타일은 개수가 정해져 있음, 그러므로 전체 - 갈색 하면 노란색도 구할 수 있음

  3. 여러가지 case의 필요한 갈색, 노란색 타일을 구한 뒤 주어진 갈색, 노란색과 비교하고 맞을 때까지 반복



































def need(total, brown, yellow):  # 해당 크기에서 필요한 타일 개수 각각 return
    # 겉면 4개 - 겹치는 부분(4개) => 해당 크기에서 필요한 갈색
    need_brown = (brown * 2 + yellow * 2) - 4
    # 전체 - 해당 크기에서 필요한 갈색 => 해당 크기에서 필요한 노란색
    need_yellow = total - need_brown
    return need_brown, need_yellow


def solution(brown, yellow):
    # 전체 타일 개수
    total = brown + yellow
    # 모든 가로, 세로 경우의 수
    cases = [(total // i, i) for i in range(2, total) if not (total / i) % 1]
    # 각각 사용할 brown, yellow 순회
    for c in cases:
        # 여러가지 타일을 놓는 case 대입해서 필요한 타일 개수 구하기
        need_brown, need_yellow = need(total, c[0], c[1])
        # 내가 입력한 case에서 사용한 타일 == 주어진 타일일 경우 => 정답
        if (need_brown, need_yellow) == (brown, yellow):
            return c
profile
남들 개발 공부할 때 일기 쓰는 사람

0개의 댓글