문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42842
코드 구현
- 알고리즘 유형: 철저한 검색
- 시간 복잡도: O(N) 아마도?
def solution(brown, yellow):
answer = ()
yellow_x = 0
yellow_y = 0
for i in range (1,yellow+1): #옐로우의 갯수만큼 반복문을 돌린다
if yellow % i == 0: #옐로우의 갯수가 i로 나누어 떨어질 경우
yellow_x = int(yellow / i) #옐로우를 i로 나눈 몫이 yello의 가로 길이가 되며
yellow_y = i #옐로우의 세로 길이는 i가 된다
if (yellow_x * 2 + yellow_y *2) + 4 == brown:
answer.append(yellow_x+2)
answer.append(yellow_y+2)
return sorted(answer, reverse = True)
return answer
해결 방법
- 결정적인

러그가 길이보다 너비가 같거나 긴 (직사각형) 구조를 가지고 있다는 점을 고려하면 논리는 다음과 같습니다.
(노란색의 너비(행)*2 + (노란색의 길이(열))*2 +4 = 갈색
갈색 길이 + 2 = 깔개 길이
갈색 너비 + 2 = 카펫 너비
따라서 yellow_x(=노란색 너비)*2 + yellow_y(=노란색 세로)*2)+4 == 갈색이면 노란색의 가로 세로 값을 사용
응답 배열에서 Borwn의 너비(yellow_x+2) 및 아래에서 수직으로(황색)붙이다,
내림차순으로 출력합니다.
(카펫의 길이가 길이보다 크거나 같다는 문제에 한계가 있기 때문에
큰 값은 가로로, 작은 값은 세로로 해야 하기 때문입니다.)