카펫(programmers 문제) python 풀이
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42842
갈색 블록의 갯수 brown과 노란색 블록의 갯수 yellow가 주어졌을 때,
위의 그림과 같이 노란색 블록으로 만든 사각형의 둘레를 갈색 블록으로 다 둘러싼 경우에 전체 사각형의 [가로, 세로]를 리턴하는 문제이다.
내 풀이
def solution(brown, yellow):
# yellow 블록으로 만들 수 있는 사각형의 경우
root_yellow = int(yellow ** 0.5)
for i in range(1, root_yellow + 1):
if yellow % i == 0:
if brown == 2 * (i + (yellow / i)) + 4:
return [int(yellow / i) + 2, i + 2]
# 만든 사각형의 둘레 길이 + 4가 brown 블록의 갯수와 같은 경우
먼저, yellow 블록으로 만들 수 있는 사각형의 경우를 구한 뒤, 그 사각형의 둘레의 길이 + 4와 brown 갯수가 같은지 확인 후 리턴한다.
노란 사각형의 한 변의 길이가 가장 긴 경우는 yellow이고, 그 다음으로(=두 번째로) 가장 긴 경우는 적어도 루트 yellow 이하이다.
따라서 위와 같이 for문에 root_yellow를 넣어줘서 노란색 블록을 만들고 그 둘레를 갈색 블록으로 채울 수 있는지 확인하여 리턴을 해준다.
결과
Author And Source
이 문제에 관하여(카펫(programmers 문제) python 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@viriditass/카펫programmers-문제-python-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)