https://programmers.co.kr/learn/courses/30/lessons/42842
> 완전탐색
yellow의 약수가 될 수 있는 경우의 수 중 조건문을 만족하는 수가 있으면 해당 수들을 반환하는 함수로 작성하였다.
결과를 도출하기까지 다음 세가지 조건을 걸었다.
1) yellow의 약수가 되는 조건- yellow이하의 수 중 yellow의 약수가 되는 수가 있으면 그 수와 함께 짝을 이루는(곱했을 때 yellow가 나오는) 수를 j로 지정
2) 만약 j(가로)가 i(세로)보다 짧으면 문제의 조건에 어긋나고 i와 j를 통해 구할 수 있는 약수는 구한 상태이므로 반복문을 중지시킨다.
3) j에 2를 더한 값(전체 사각형의 가로), i에 2를 더한 값(전체 사각형의 세로)의 곱에서 yellow 사각형을 뺀 값이 brown 사각형의 수와 같으면 해당 width와 height가 답이 된다.
def solution(brown, yellow):
# yellow의 약수구하기
for i in range(1,yellow+1):
if yellow % i ==0:
j= yellow // i
# 가로가 세로보다 짧으면 반복문 중지
if j<i:
break
width= j+2
height= i+2
if width*height - yellow == brown:
return [width, height]
'python > 알고리즘 문제풀이' 카테고리의 다른 글
서로소 집합 알고리즘(2)/ 경로압축기법 (0) | 2021.07.14 |
---|---|
서로소집합 알고리즘(1) (0) | 2021.07.14 |
[프로그래머스 | 파이썬3] 구명보트- 그리디알고리즘 활용 (0) | 2021.07.12 |
[프로그래머스 | 파이썬3] 더 맵게- 힙 활용 (0) | 2021.07.11 |
최단경로 알고리즘(3)/ 플로이드 워셜 알고리즘 (0) | 2021.07.09 |