제주 탈출 일지

[python3] 프로그래머스 레벨 2 - 카펫 본문

코딩 테스트

[python3] 프로그래머스 레벨 2 - 카펫

귀건 2021. 6. 15. 01:02
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42842?language=python3 

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr

 

# 최종답안

 

def solution(brown, yellow):
    answer = []
    
    ver_hor_sum = (brown // 2) + 2
    sum_ = brown + yellow
    
    for i in range(1, ver_hor_sum):
        hor_ = i
        ver_ = ver_hor_sum - i
        if ver_ >= hor_ :
            if ver_ * hor_ == sum_:
                answer.append(ver_)
                answer.append(hor_)
            
    
    return answer

 

사각형 모양의 카펫에 가장 바깥쪽 테두리 한줄은 갈색, 나머지 안쪽은 노란색인데, 각 색의 타일 갯수를 주고 카펫에 대한 가로, 세로 길이를 구하는 문제.

 

필자는 이 문제를 나름(?) 수학적으로 생각해보았음.

 

문제의 타일 -> 갈 10, 노 2

이 경우 가로는 4, 세로는 3임. 총 12개

즉 가로 * 세로 = 갈색 + 노랑 = 12 이라는 식을 하나 얻을 수 있음.

 

갈색은 가장 바깥쪽 테두리이므로, 가로 + 가로 + 세로 + 세로 - 4(중복해서 더해진 부분) = 갈색의 타일 개수 임을 확인할 수 있음.

그래서 가로 + 세로 = 갈색/2 + 2 라는 식을 얻게 됨.

 

가로는 세로보다 더 크다는 조건이 있으므로

총 개수에서 하나씩 줄여가며 조건을 비교하면 쉽게 답을 찾을 수 있었음.

728x90
반응형
Comments