알고리즘/프로그래머스
[프로그래머스] 파이썬 _ 카펫
이숭간
2021. 7. 7. 11:55
728x90
https://programmers.co.kr/learn/courses/30/lessons/42842?language=python3
문제유형 : 완전탐색
문제풀이 :
- yellow가 X일때 만들수있는 사각형의 가로,세로 길이를 모두 구한다. ( 가로가 세로 이상 )
- ex) X=6이면 (가로,세로)일때 (6,1), (3,2) 인 사각형을 만들수 있다.
- 위에서 구한 각 경우에 대해서 brown의 개수를 구한다.
- 공식 : 노란색 사각형의 길이를 알때 걔를 둘러싼 테두리의 개수 : (가로+세로)*2 + 4
- 조건에서 주어진 brown과 같은지 비교하고 같으면 최종 길이를 찾을 수 있다. break
- 최종길이는 노란색의 가로세로에 각각 +2를 해주면 된다.
팁 :
- 어떤 숫자의 약수 구하기 : 해당숫자의 제곱근까지만 확인한다!
- 제곱근 = int(n ** (1/2))
정답코드 :
def solution(brown, yellow):
answer = []
hubo_list = get_pair(yellow)
for i in hubo_list:
if brown == get_brown(i):
answer.append(i[1]+2)
answer.append(i[0]+2)
break
return answer
def get_pair(num):
# 제곱근까지 확인
result = []
for i in range(1, int(num ** (1/2)) + 1):
if num%i == 0:
result.append((i, num//i))
return result
def get_brown(tuple_):
a,b = tuple_[0], tuple_[1]
return (a+b)*2 + 4