(Swift) Programmers 카펫

SteadySlower·2022년 10월 1일
0

Coding Test

목록 보기
171/305

코딩테스트 연습 - 카펫

문제 풀이 아이디어

완전탐색 문제입니다.

brown은 (너비 + 높이) * 2 - 4 이므로 높이를 알면 너비를 구할 수 있습니다. 높이가 너비보다 작으므로 높이를 1부터 탐색합시다.

높이가 정해지면 brown을 통해 너비를 구합니다. 너비 = (brown + 4) / 2 - 높이 입니다.

높이와 너비가 나오면 넓이를 구할 수 있게 됩니다. 구한 넓이를 brown + yellow와 일치하는지 확인하고 일치하면 해당 너비와 높이를 배열에 담아 리턴하면 됩니다.

코드

import Foundation

func solution(_ brown:Int, _ yellow:Int) -> [Int] {
    // 높이를 1부터 탐색
    var height = 1
    
    while true {
        // 너비 구하기
        let width = (brown + 4) / 2 - height
        // 넓이 구하기
        let size = height * width
        // 넓이 == brown + yellow 라면 정답 처리
        if size == brown + yellow {
            return [width, height]
        }
        // 아니면 다시 탐색
        height += 1
    }
}
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글