본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 카펫

by 코드뭉치 2023. 5. 9.

카펫

 

1. 구해야 하는 것
    # 카펫의 가로, 세로
2. 1을 구하기 위해 필요한 것
    # 가로 세로를 어떻게 구할지??
    # 넓이 = yellow + brown
    # brown의 면적 = 2*세로 + 2*가로 - 4
    # yellow의 면적 = (가로-2) * (세로-2)
3. 그 외 고려해야 할 사항
    # 카펫의 긴쪽이 가로
    # yellow는 1 이상(가로, 세로 최소 길이는 3부터 시작한다)

 

 

1. 풀이

s = yellow + brown  # 넓이
for height in range(3, s//3+1):  # 세로 길이 후보 i
    if s % height == 0:  # 넓이를 세로 길이로 나눌 수 있다면
        width = s / height  # 그것은 가로길이 후보
        if (height - 2) * (width - 2) == yellow: # yellow의 면적 = (가로-2) * (세로-2)
            print([width, height])

 

 

2. 제출용 함수

def solution(brown, yellow):
    s = yellow + brown
    for height in range(3, s//3+1):
        if s % height == 0:
            width = s / height
            if (height - 2) * (width - 2) == yellow:
                return [width, height]

 

댓글