카펫 갯수를 구하는 문제인데 해결하고 보니 다른분들은 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 |