Python/알고리즘문제
[프로그래머스][완전탐색] 카펫
붕어사랑 티스토리
2021. 4. 15. 14:57
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해설
brown+yellow = w*h
yellow = (w-2)*(h-2)
위 방정식을 풀면 w, h를 구할 수 있다. 허나 이렇게 풀면 완전 수학문제다
나는 완전탐색 느낌이 나도록 문제룰 풀어보았다.
total 셀의 개수는 brown + yellow 이다.
yellow = (w-2)*(h-2) 이다.
- h를 3부터 시작해서 차례로 오름차순으로 증가해 나간다
- total이 h로 나눠지는지 확인한다.
- h로 나눠지면 그때의 (w-2)*(h-2)가 yellow가 되는지 확인한다
from math import sqrt, ceil
def solution(brown, yellow):
answer = []
total = brown + yellow
for h in range(3, total + 1):
if total % h == 0:
w = total/h
if (w - 2) * (h - 2) == yellow:
answer = [w,h]
break
return answer
반응형