카테고리 없음
[Swift 알고리즘] - 카펫 (Programmers)
Peppo
2024. 8. 15. 10:09
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42842
내 풀이
import Foundation
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
var size: [Int] = []
var totalSize: Int = brown + yellow
for height in 1...totalSize {
let width = totalSize / height
if (width - 2) * (height - 2) == yellow {
size.append(width)
size.append(height)
}
}
return size
}
- width값 구하기
- totalSize는 brown + yellow로 구했으니, width * height로 만들면 됩니다.
- 반복문으로 height값을 증가시키면서 width값을 구합니다.
예) brown = 10, yellow = 2 일 경우
width, height 값이 나오는 경우는 아래와 같습니다.
1, 12 | 2, 6 | 3, 4 | 4, 3 | 6, 2 | 12, 1
4. yellow 면적을 구해서 가로 세로의 길이를 알 수 있습니다.
5. yellow 면적을 구하려면 가로 양옆을 하나씩 빼고 (-2), 세로 양옆을 하나씩 빼면(-2) 아래와 같은 공식이 나옵니다.
6. (width - 2) * (height * 2) = yellow
7. 구해진 값으로 size에 대입해주면 끝!
728x90