def solution(brown, yellow):
answer = []
yellow_x = 0
yellow_y = 0
for i in range(1, yellow+1):
if yellow % i == 0:
yellow_x = yellow // i
yellow_y = i
if 2*yellow_x + 2*yellow_y + 4 == brown:
answer.append(yellow_x+2)
answer.append(yellow_y+2)
break
answer.sort(reverse = True)
return answer
yellow
의 크기만큼 for
문을 돌려준다.
1. yellow % i
로 yellow_x
와 yellow_y
를 구한다. 나누어 떨어지면 그 몫이 가로가 되고, i
가 세로가 된다.
2. 두번째 if
문에서 2x+2y+4 == brown
조건을 넣어준다. 각각에 +2
씩 해주면 전체 가로세로가 나오므로 이를 answer
에 담아주고 break
.
3. 가로의 길이는 세로보다 길거나 같다는 조건이 있으므로 내림차순으로 정렬해준 다음 return
하면 된다.
import math
def solution(brown, yellow):
w = ((brown+4)/2 + math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
h = ((brown+4)/2 - math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
return [w,h]
그냥 아예 근의 공식 이용해서 푸는 방법도 있다..
내 생각엔 이게 훨 나은듯.. 직관적이잔냐
무조건 예시에 나온것 처럼 갈색이 한줄 둘러져있는 중앙이 노란색인 카펫이란 것을 깨닫는다면 방정식 세워서 푸는 것이 쉬운 문제인듯 하다. 근데 난 도대체 이게 완전탐색이랑 먼상관이지? 라는 생각만 든다.. 알고리즘이란 뭘까...
잘보고 갑니다.
감사합니다.