알고리즘/프로그래머스
[프로그래머스] 카펫 - 파이썬
빙빙
2021. 9. 8. 15:17
def solution(brown, yellow):
answer = []
x,y = 0,3
cal= (brown + 4)//2
while 1:
x = cal - y
if x < y:
break
if x >= y: #조건에 맞으면
if x*y - brown == yellow:
answer.append(x)
answer.append(y)
break
y += 1
return answer
print(solution(8,1))
둘레= 가로 *2 + (세로-2(가로에서 카운트한 모서리부분) ) * 2 이기 때문에
가로 : x , 세로 : y
brown = 2x + 2(y-2)
조건은 x>=y 과 y >2이다.
y>2인 이유는?
세로가 3개 이상 이어야만 가운데 부분이 생기기 때문!!
2개면 가운데 부분이 생길 수가 없다!
그래서 y는 초기에 3으로 세팅해놓고 반복문 한번 돌면 +1을 해주는 방식으로 찾는다.
x*y를 하면 모든 칸의 개수가 나오는데 테두리칸 수를 빼면 가운데 개수가 나온다.
그래서 x*y - brown == yellow라는 조건문을 줬고 조건이 일치할 때 answer에 넣고 while문 중단시켜준다.