Algorithm/프로그래머스
[프로그래머스] [Python] Level2_카펫
은세라
2021. 8. 5. 04:03
https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
1차 시도
def solution(brown, yellow):
# y_width * y_height = yellow
# (y_width+2) * (y_height+2) = brown + yellow
# y_width + y_height = brown/2-2
answer = []
for i in range(1, yellow+1): #가로=i, 세로 = yellow/i
if (i+2)*(yellow/i+2) == brown + yellow and i + yellow/i == brown/2-2:
answer.append(i)
answer.append(yellow/i)
print(answer)
return answer
2차 시도
def solution(brown, yellow):
s = brown + yellow
for width in range(s, 2, -1): #가로
if s % width == 0:
height = s // width #세로
if yellow == (width-2)*(height-2) : return[width, height]
💡최종로직
1. 전체 갯수 구함
2. 전체 갯수를 기준으로 하나씩 빼면서 가로가 될 수 있는지 검사
2-1. 전체가 가로로 나누어 떨어지면
2-2. (가로-2)(세로-2) == yellow이면
[width, height] return
width값은 전체에서 하나씩 역으로 빼기 때문에 무조건 width가 height보다 크거나 같음