알고리즘 풀이/프로그래머스

[Level 2] 카펫

mhko411 2021. 2. 23. 20:39
728x90

programmers.co.kr/learn/courses/30/lessons/42842

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr


접근

노란색의 칸 수는 (가로길이-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