티스토리 뷰

728x90
반응형

문제

programmers.co.kr/learn/courses/30/lessons/42842?language=python3

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

 

코드

def solution(brown, yellow):
    answer = []
    for col in range(3, brown):
        if (col-2) * ((brown-(col*2))//2) == yellow:
            return[(brown-(col*2))//2+2, col]

brown의 세로의 길이는 최소 3부터 brown//2 까지만 for문을 돌게한다.

(세로의 길이가 가로의 길이와 같거나 더 작기 때문에 세로의 길이가 brown//2 보다 커질수없다.)

 

yellow는 (brown 가로길이-2)(brown 세로길이-2)로 표현할 수 있고

brown 가로길이는 brown에서 세로길이*2를 빼주고 나누기 2를 해주면 가로길이가 되는데 세로길이를 빼줄때 겹치는 부분을 빼줬으므로 +2를 해서 다시 채워준다.

(하지만 yellow 가로길이는 brown 가로길이에 -2를 해줘야 하므로 +2와 -2가 만나서 사라짐)

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28