728x90
programmers.co.kr/learn/courses/30/lessons/42842
접근
노란색의 칸 수는 (가로길이-2) x (세로길이-2)가 된다. 2를 빼주는 이유는 양옆과 위아래로 한 칸씩 갈색 칸이 있기 때문이다. 입력받는 노란색과 갈색칸을 더해주면 전체넓이가 되고 전체넓이의 약수 중에서 가로길이를 찾은 후에 가로길이를 통해 세로길이를 찾는다.
적합한 가로길이와 세로길이를 찾았다면 위에서 노란색 칸의 수를 구하는 공식에 대입하여 일치하는지 확인한다.
구현
w는 가로길이, h는 세로길이다.
카펫의 전체넓이의 약수로 가로, 세로 길이를 구하고 이를 노란색 칸과 맞는지 확인한다.
def solution(brown, yellow):
answer = []
carpet = brown + yellow
for w in range(carpet, 0, -1):
if carpet%w == 0:
h = carpet/w
if (w-2)*(h-2) == yellow:
answer = [w, h]
break
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] K번째 수 - map(), filter(), sort() (0) | 2021.02.23 |
---|---|
[Level 3] 정수 삼각형 (0) | 2021.02.23 |
[Level 2] 네트워크 (0) | 2021.02.22 |
[Level 2] 땅따먹기 (0) | 2021.02.22 |
[Level 2] 올바른 괄호 (0) | 2021.02.21 |