m1ndy5's coding blog

99클럽 코테 스터디 9일차 TIL 완전탐색 : 프로그래머스 LV.2 카펫 with Python 본문

알고리즘 with python/알고리즘 스터디

99클럽 코테 스터디 9일차 TIL 완전탐색 : 프로그래머스 LV.2 카펫 with Python

정민됴 2024. 5. 28. 11:25

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

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

programmers.co.kr

문제는 위쪽에서!

 

이 문제도 옛날에 풀어봤던 문제라서 별로 어렵지 않게 풀었다.

import math

def solution(brown, yellow):
    answer = []
    for h in range(1, int(math.sqrt(yellow))+1):
        if yellow % h == 0:
            w = yellow//h
            if w+h+2 == brown//2:
                answer = [w+2, h+2]
                break
    return answer

h = 노란색 사각형의 세로

w = 노락색 사각형의 가로

 

1. h를 하나씩 늘려가는데 yellow가 h로 나누어 떨어지지 않으면 사각형이 아니니 패스

2. 나누어 떨어진다면 yellow를 h로 나눈 값은 w가 된다.

3. w+h+2가 brown의 1/2라면 정답!

 

이 때 포문은 루트 yellow 만큼 돌렸는데 이유는 루트값을 기준으로 앞 뒤가 짝지어지기 때문! -> 세로가 가로보다 항상 짧다했음

 

이렇게 풀었다. 어려운 문제는 아니었던 것 같다!