본문 바로가기
Algorithm/programmers

programmers 카펫(완전탐색)

by 갈잃자 2022. 6. 14.

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

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

result = []
def solution(brown, yellow):
    global result
    answer = []
    for i in range(1,brown+yellow+1):
        if int((brown + yellow) / i) == ((brown + yellow) / i): #정수로 나누어 지는지 확인
            if ((brown + yellow) / i) <= i: # 정수로 나누어지는 수 중 곂치는 걸 제외시켜줌 ex)5*3, 3,5
                answer.append([i, (brown+yellow)/i]) 

    for i in range(len(answer)):
        if (answer[i][0]-2) * (answer[i][1]-2) == yellow: #yellow의 갯수를 맞춰주는 코드
            result = [answer[i][0],int(answer[i][1])]

    return result

brown과 yellow의 갯수를 보고 카펫의 크기를 맞추는 문제이다.

 

brown은 배열의 가장자리만 차지하므로 나머지는 yellow일 수 밖에 없다!

 

그렇다면 yellow를 구하는 식은 (y좌표-2)*(x좌표-2)가 된다 (가장자리의 brown의 공간을 빼줌)

 

댓글