티스토리 뷰

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
}

 

  1. width값 구하기 
  2. totalSize는 brown + yellow로 구했으니, width * height로 만들면 됩니다.
  3. 반복문으로 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