본문 바로가기
Algorithm/etc

[파이썬] 프로그래머스 : 카펫 (Lv.2)

by 베짱이28호 2023. 7. 10.

[파이썬] 프로그래머스 :  카펫 (Lv.2)

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


풀이

방향성 생각

전체 블록 수 n = brown + yellow. 이 수의 약수 set를 a라 한다.

brown//2 + 2는 h+w를 만족한다. ㄱ자 모양에서 코너는 두 번 더해짐.

n = h*w를 만족한다.

약수 집합 a를 돌리면서 h+w가 brown//2+2를 만족시키면 탈출

답은 정렬해서 작성

전체코드

def solution(brown,yellow): # 합이 h+w(brown/2+2)이면서 곱이 h*w(yellow+brown)
    a = set()
    n = yellow+brown
    for i in range(1,1+int(n**0.5)):
        if n%i==0 :
            a.add((i,n//i))

    for h,w in a:
        if h+w == (brown//2+2):
            break
            
    return sorted([h,w],reverse=True)

 

댓글