카펫

yongju·2022년 11월 7일
0

Programmers

목록 보기
11/23
post-thumbnail

프로그래머스 레벨2 [정답율 68%]

❓문제

❗문제 정리
사용한 파라미터 :
brown, yellow(int) : 입력으로 받은 타일 개수
width(list_int), height(list_int): 가능한 케이스의 가로, 세로 리스트

예를들어, brown=24, yellow=24의 경우 가능한 케이스는
(가로, 세로)=(1, 24), (2, 12), (3, 8), (4, 6), (6, 4), (8, 3), (12, 2), (24,1)이다.
가로길이>=세로길이라는 조건에의해, 다시, (가로, 세로)=(6, 4), (8, 3), (12, 2), (24,1)이다.
이제 brown의 개수를 고려해보자.

입력받은 brown과 수가 같은 경우는 (6,4)의 경우이다.

📑코드

def solution(brown, yellow):
    widths,heights=[], []
    for width in range(1,yellow+1):
        if yellow%width==0:
            if width>=(yellow//width):#yellow가로>세로
                widths.append(width)
                heights.append(yellow//width)
    for i in range(len(widths)):
        if 2*(widths[i]+2+heights[i])==brown:
            return [widths[i]+2, heights[i]+2]

📝코드 설명

widths,heights=[], []
    for width in range(1,yellow+1):
        if yellow%width==0:
            if width>=(yellow//width):#yellow가로>세로
                widths.append(width)
                heights.append(yellow//width)

1부터 yellow의 길이까지 width로 지정
조건에 맞춰서 yellow가 되는 경우 중, 가로가 세로보다 긴 것만 widths, heights에 넣어준다.

    for i in range(len(widths)):
        if 2*(widths[i]+2+heights[i])==brown:
            return [widths[i]+2, heights[i]+2]

brown의 타일 개수2*((yellow의 너비+2)+yellow의 길이)를 계산하여 입력받은 brown의 개수와 같은지 확인한다.

🎖️제출 결과

💡insight
굳이 width, height의를 구하지 않아도 if를 추가하여 걸러낼 수 있음.

profile
AI dev

0개의 댓글