💡 생각
갈색 타일의 개수는 아래와 같은 패턴을 가진다
(노란색 타일 뭉치 가로 + 노란색 타일 뭉치 세로) x 2 + 4
(brown-4) / 2 = r(노란색 타일 뭉치 가로) + c(세로)
그리고 (가로)x(세로)
는 노란색 타일의 개수
r * c = yellow
c = yellow // r # c가 자연수
마지막으로 전체 타일의 크기는 (노란색 타일 가로 + 2) x (노란색 타일 세로 + 2)
📖 내 코드
def solution(brown, yellow):
for r in range(1, yellow+1):
if yellow % r == 0:
if (brown-4)/2 == r + yellow//r:
return yellow//r+2, r+2
📑 다른 사람의 풀이
def solution(brown, red):
for i in range(1, int(red**(1/2))+1):
if red % i == 0:
if 2*(i + red//i) == brown-4:
return [red//i+2, i+2]
내 코드와 거의 동일한데 다른 점이 있다면 for문 마지노를 int(red**(1/2))+1
루트 씌운 값을 쓴 것? yellow 가로, 세로는 반을 중심으로 한 쪽이 커질 때 한 쪽은 작아지니까 루트 씌워도 상관없는 듯하다
그런데 어차피 정답인 곳에서 리턴되기 때문에.. 큰 의미는 없을 듯