[ Programmers 42842 ] 카펫(Python)

uoayop·2021년 6월 7일
0

알고리즘 문제

목록 보기
98/103
post-thumbnail

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

문제

카펫의 테두리는 갈색, 그 외에는 노란색이다.
갈색, 노란색의 개수가 주어질 때 카펫의 가로세로 크기를 구하면 된다.


가로 = x / 세로 = y 일 때, 가로 * 세로 = 갈색 + 노랑 이다.

0. 가로, 세로 구하기

def solution(brown, yellow):
    xy = brown + yellow
    # 가로 x, 세로 y
    for x in range(3, xy + 1):
        for y in range(x, 1, -1):
            if x < y:
                continue
            elif x * y == xy:
                if 2 * x + 2 * (y-2) == brown:
                    return [x,y]
  • 문제에서 노란색의 개수는 1보다 많다고 했으므로 가로는 3칸 이상이여야 한다.
  • 가로의 크기가 세로 크기보다 같거나 크다고 했으므로
    그 이외의 경우는 고려하지 않는다. if x < y: continue
  • 만약 가로 * 세로 = 노랑 + 갈색 이고, 테두리의 수 = 갈색 이면
    [가로, 세로]를 리턴한다.

문제 풀이


코드

def solution(brown, yellow):
    xy = brown + yellow
    # 가로 x, 세로 y
    for x in range(3, xy + 1):
        for y in range(x, 1, -1):
            if x < y:
                continue
            elif x * y == xy:
                if 2 * x + 2 * (y-2) == brown:
                    return [x,y]
profile
slow and steady wins the race 🐢

0개의 댓글