본문 바로가기
Python/알고리즘문제

[프로그래머스][완전탐색] 카펫

by 붕어사랑 티스토리 2021. 4. 15.
반응형

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
반응형

댓글