728x90
https://programmers.co.kr/learn/courses/30/lessons/42842
(가로 - 2) * (세로 - 2) = yellow 라는 것을 그림을 그려서 생각해보면 알 수 있다.
코드 :
def solution(brown, yellow):
s = brown + yellow
for i in range(s,2,-1) : # s에서 2 이전까지 -1씩 감소시키며 i를 구한다.
if s%i == 0: # i 가 가로일 수 있다.
a = s // i # 세로를 구하고
if yellow == (i-2) * (a-2) : # 공식을 만족하면
return [i,a] # [가로, 세로] 를 반환
s는 전체 면적
i 는 가로의 길이
a 는 세로의 길이
i는 가로의 길이를 의미하고 가로는 세로보다 크다.
s에서 1씩 감소하면서 내려오므로 i는 큰수부터 감소하므로 위의 조건에 적합하다.
brown이 8이상이니까 적어도 3*3이라는 의미이다. 그래서 range는 2까지 내려오지않아 최소 3이다.
참고 블로그 :
https://it-garden.tistory.com/361
복습 :
✅ 20220621
✅ 20220623
✅ 20220625
✅ 20220626
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]조이스틱_Greedy(그리디) (0) | 2022.06.19 |
---|---|
[Python/프로그래머스] 등굣길_DP (0) | 2022.06.18 |
[Python/프로그래머스] 체육복_그리디 (0) | 2022.06.15 |
[Python/프로그래머스]여행경로_DFS_(🐶삽질_깊은복사,얕은복사) (0) | 2022.06.15 |
[Python/프로그래머스]단어변환_BFS (0) | 2022.06.15 |