https://programmers.co.kr/learn/courses/30/lessons/42842
def solution(brown, yellow):
b = brown - 4
height = 1
while True:
width = (b - (height * 2))//2
if yellow == width * height:
return [width+2, height+2]
height += 1
완전탐색 카테고리의 문제를 풀었다~
규칙성을 찾기위해 머리를 굴리느라 시간이 좀 걸렸다.
사각형의 네 꼭짓점을 제외한 가로와 세로길이로 안쪽 사각형의 넓이를 구할 수 있다.
세로길이를 1씩 늘리면서 yellow와 안쪽 사각형의 넓이가 같을때를 확인한다.
타일의 개수는 정해져있으니, 세로길이가 증가함에 따라 가로길이가 감소한다.
yellow와 안쪽 사각형의 넓이가 같으면
꼭짓점을 포함해서 [width+2, height+2] 을 리턴한다.
def solution(brown, yellow):
b = brown - 4 # 바깥 사각형 꼭짓점 네개 없애기
height = 1 # 세로길이 1부터
while True:
width = (b - (height * 2))//2
if yellow == width * height: # yellow와 안쪽 사각형의 넓이가 같으면
return [width+2, height+2] # 꼭짓점을 다시 포함해서 리턴
height += 1 # 세로길이 1 증가
테스트 1 〉 통과 (0.00ms, 10MB)
테스트 2 〉 통과 (0.00ms, 10MB)
테스트 3 〉 통과 (0.12ms, 10.1MB)
테스트 4 〉 통과 (0.00ms, 10.3MB)
테스트 5 〉 통과 (0.01ms, 10.2MB)
테스트 6 〉 통과 (0.04ms, 10.2MB)
테스트 7 〉 통과 (0.09ms, 10.1MB)
테스트 8 〉 통과 (0.12ms, 10MB)
테스트 9 〉 통과 (0.11ms, 10.2MB)
테스트 10 〉 통과 (0.16ms, 10.1MB)
테스트 11 〉 통과 (0.00ms, 10MB)
테스트 12 〉 통과 (0.00ms, 10MB)
테스트 13 〉 통과 (0.00ms, 10.1MB)
import math
def solution(brown, yellow):
w = ((brown+4)/2 + math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
h = ((brown+4)/2 - math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
return [w,h]
근의 공식을 이용한 풀이라고한다.. 똑똑스