티스토리 뷰

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

 

문제는 이렇다. 카펫무늬는 갈색이 둘러싸고 있고 안쪽에는 노란색으로 칠해져 있는 형태이다.

수학적인 감각이 조금 필요한 문제였다. 갈색은 항상 둘러싸고 있으므로 갈색의 가로 길이와 세로 길이는 x, y로 정하고

노란색의 가로세로길이는 x-2, y-2가 된다.

여기까지 생각했으면 문제는 어렵지 않다.

 

 

주석으로 최대한 설명을 달아보았다. 주석때문에 코드가 좀 더러워보일수도 있지만 주석을 굳이 다는 이유는 내가 코딩한것을 한번 더 복습하는 차원에서도 있다.

주석을 달다보면 이 코드는 왜 이렇게 한거지? 하고 더 효율적인 코드로 고칠때가 많아서 공부에 도움이 되는점도 좋다.

def solution(brown, yellow):
    x = 3   
    while True :
        y = (brown + yellow) / x
        if y == int(y) :
            y = int(y)
            if yellow == (x - 2) * (y - 2) :   
                if x >= y :
                    return [x, y]
                else:
                    return [y, x]
                break
        x += 1

처음에는 수학문제처럼 다가와 문송하긴 했지만 어차피 brown과 yellow값을 주기때문에 가로, 세로길이를 구한다는 개념만 잘 가지고 집중하면 쉽게 풀 수 있었다.