중앙은 노란색, 테두리 1줄은 갈색은 카펫을 사려고 하는데
각 노란색, 갈색의 격자 개수는 기억하지만 전체 카펫의 크기를 기억 못한다고 한다..
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/041.gif)
노란색, 갈색 격자 개수를 받아서 전체 카펫의 가로 세로 크기를 구해야 하는 문제 이다!
카펫은 예시는 이렇다! 중간은 노란색, 테두리 한줄은 갈색!
brown | yellow | return |
10 | 2 | [4,3] |
8 | 1 | [3,3] |
24 | 24 | [8,6] |
입출력 예는 이렇다
흠.. 카펫의 특징을 찾아보면...
우선 brown + yellow 가 총 격자의 갯수.. 즉 가로x세로 일것이다
그리고 가로길이는 세로길이보다 같거나 길다고 한다
그리고 갈색은 테두리 "1줄" 만 차지 ( 가로, 세로 위아래 양옆.. 각 2줄 ) 하므로 가로 m, 세로 n 이라고 했을때
카펫이 m*n 이라면...
노란색의 크기는 (m-2)x(n-2) 가 되어야 하겠넹 ~
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/012.gif)
따라서, 주어진 격자 갯수로 총 크기를 얻고
가로나 세로 값을 반복해서 살펴보면서,, 거기서 노란색의 크기가 맞는지 체크하면 되겠다!
또한 m*n = total 이므로 나누어 떨어져야하는 것도 체크하면 계산도 덜 하겠다!
최종 코드는 이렇다!
def solution(brown, yellow):
total = brown+yellow
for m in range(3,total):
if not total%m==0: continue
n = total/m
# brown 은 테두리로 가로,세로 각 2씩 차지함
y = (m-2)*(n-2)
if y==yellow:
return [max(m,n),min(m,n)]
역시나 생각하는게 더 오래걸린 문제! 하하
![](https://t1.daumcdn.net/keditor/emoticon/face/large/002.png)
'Python > 프로그래머스' 카테고리의 다른 글
예상 대진 (1) | 2024.03.25 |
---|---|
구명보트 (0) | 2024.03.25 |
피보나치 수 (0) | 2024.03.25 |
도넛과 막대 그래프 (0) | 2024.03.21 |
가장 많이 받은 선물 (0) | 2024.03.21 |