반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.2) - 카펫" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 완전 탐색 문제입니다.
가로와 세로를 하나하나 체크하면서 정답 조건과 일치하는지 확인합니다.
가로와 세로를 구하기 위해 총 타일의 개수를 구합니다. (brown + yellow)
1부터 sum까지 반복하며 sum의 약수이면 몫을 w, 나누는 수(i)를 h로 설정합니다.
몫을 w, 나누는 수를 h로 설정하는 이유는 가로가 세로보다 크거나 같기 때문입니다.
노란색 타일 개수는 (w-2) * (h-2)와 같습니다. 2씩 빼주는 건 갈색 테두리 부분을 제외하기 위함입니다.
(w-2) * (h-2)가 input yellow와 동일하다면 정답입니다.
감사합니다!
전체 코드
import Foundation
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
var w = 0, h = 0
let sum = brown + yellow
for i in 1...sum {
if sum % i == 0 {
w = sum / i
h = i
}
if (w-2) * (h-2) == yellow {
break
}
}
return [w, h]
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형