[PG] 42842 카펫

nerry·2022년 1월 26일
0

알고리즘

목록 보기
25/86

42839 Lv2

me

def solution(brown, yellow):
    bxy=(brown-4)//2 
    # brown에서 모든 모서리 부분의 사각형을 제외하고 나누기 2를 한 몫은 yellow의 가로, 세로를 더한 거랑 마찬가지이다.
    for i in range(1,(bxy//2)+1): 
    # 1부터 돌면서 bxy와 i의 관계 속에 이 둘을 곱했을 때 yellow의 너비, 
    # 즉 가로*세로랑 같으니 그게 같으면 해당 것을 작은 것부터 반환하면 된다.
        if i*(bxy-i)==yellow:
            return [bxy-i+2,i+2]

solution

def solution(brown, red):
    for i in range(1, int(red**(1/2))+1):
        if red % i == 0:
            if 2*(i + red//i) == brown-4:
                return [red//i+2, i+2]
  1. 1부터 루트 red를 도는 반복문 내에서
  2. red 나누기 i가 나누어 떨어진다면
  3. brown과 비교해서 맞으면 리턴
  • 나랑 반대로 하신 분이었다. 수학 공식을 생각해서 풀면 금방 풀릴 문제인 것 같다.
profile
터벅터벅 개발(은좋은)자 로그

0개의 댓글

관련 채용 정보