본문 바로가기

알고리즘/프로그래머스

프로그래머스 - 카펫

카펫 갯수를 구하는 문제인데 해결하고 보니 다른분들은 sqrt로 간단하게 계산하는 거 같던데...

 

일단 가로 값이 세로보다 작아질 수는 없기때문에 가운데서부터 탐색을 했다.

조건 부분을 조금 더 간단하게 해보고 싶은데 .. 방법을 좀 더 알아봐야겠다

func solution(_ brown:Int, _ yellow:Int) -> [Int] {
    var result = [Int]()
    
    //결과 값으로 출력되는 가로, 세로 값의 곱은 블럭 수와 같음
    let sum = brown + yellow
    
    //세로는 가로보다 커질 수 없기때문에 정사각형이 되는 가운데서 부터 참색
    var width = sum / 2
    
    while width > 0 {
        //가로세로 합은 가로로 나누어 떨어지고, 세로는 2보다는 커야하고, 테두리를 감싸는 브라운 블럭 갯수를 구하면
        if sum % width == 0 && sum / width > 2 && ((width * 2) + ((sum / width - 2) * 2)) == brown {
            return [width, sum / width]
        }
        
        width -= 1
    }
    return result
}

'알고리즘 > 프로그래머스' 카테고리의 다른 글

프로그래머스 = 베스트앨범  (0) 2020.12.27
프로그래머스 - 위장  (0) 2020.12.26
프로그래머스 - H-index  (0) 2020.12.24
프로그래머스 - 소수찾기  (0) 2020.12.23
프로그래머스 - 모의고사  (0) 2020.12.23