[프로그래머스] 완전탐색 > 카펫
문제 1: 거스름돈
프로그래머스 카펫 문제를 풀어보자.
처음 생각한 풀이
yellow
를width >= height
조건에 맞춰 순서쌍을 구한다.isOkay
함수를 통해 1번에서 구한 순서쌍 중에 답이될 수 있는 순서쌍을 구한다.- 2번에서 구한 순서쌍에
+2
씩 더해 답을 구한다.
def solution(brown, yellow):
answer = []
for height in range(1, yellow // 2 + 2):
# 이때 height 는 세로, width 는 가로
width = yellow // height
if yellow % height == 0:
if width >= height: # 가로가 세로보다 크거나 같아야 함
if isOkay(height, yellow, brown):
answer.append(width + 2)
answer.append(height + 2)
return answer
def isOkay(height, yellow, brown):
width = yellow // height
if width*2 + height*2 + 4 == brown: # 둘레를 구해 brown 과 값을 비교한다
return True
return False
더 간결한 풀이
풀이 방법은 위와 같지만 더 간단하게 구현할 수 있었다.
import math
def solution(brown, yellow):
for height in range(1, int(math.sqrt(yellow))+1):
if yellow % height == 0:
width = yellow // height
if height*2 + width*2 + 4 == brown:
return [width+2, height+2]
💛 개인 공부 기록용 블로그입니다. 👻