문제
링크텍스트
풀이
- 문제 그대로 아래 둑을 막고 모든 물을 퍼냈습니다.
- yellow 를 1 부터 시작해서 인수 분해하여
- 만약 y를 분해한 두 인수 m과 n이
(m+n+2)*2 == b
이면, 둘러싼 갈색 갯수와 같으므로
[m+2,n+2]
를 내보냅니다.
- 다만 가로가 세로보다 같거나 크도록 합니다.
결과
def f_t(id_t):
if id_t == 0:
brown, yellow, r = 10, 2, [4, 3]
if id_t == 1:
brown, yellow, r = 8, 1, [3, 3]
if id_t == 2:
brown, yellow, r = 24, 24, [8, 6]
return brown, yellow, r
def solution(b, y):
f_c = lambda m,n,b: [max(m,n)+2,min(m,n)+2] if (n+m+2)*2 == b else False
a = f_c(y,1,b)
if a:
return a
else:
y0 = y
i = 2
while i < y:
if y % i == 0:
a = f_c(i,int(y0/i),b)
if a:
return a
i += 1
answer = []
return answer
for i in range(3):
print(f'test case {i}')
brown, yellow, r = f_t(i)
a = solution(brown, yellow)
print(a)
print(r)