Archive/Questions
[programmers/Swift] 카펫
Marco
2022. 5. 14. 18:11
728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - 완전탐색 - 카펫
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
Constraints :
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
//
// Created by Yongwoo Marco on 2022/05/12.
// Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
for row in 1...(yellow == 1 ? 2 : yellow/2) {
if yellow % row == 0 {
let yellowWidth = yellow / row
let yellowHeight = row
if 2 * (yellowWidth + 2) + 2 * yellowHeight == brown {
return [yellowWidth + 2, yellowHeight + 2]
}
}
}
return []
}
print(solution(10, 2)) // [4, 3]
print(solution(8, 1)) // [3, 3]
print(solution(24, 24)) // [8, 6]
How I tried this :
가로길이가 세로길이보다 크기 때문에
yellowWidth + 2 가 성립했다..
노란색이 4개라면
22222
211112
22222
3 3 3 3
3 1 1 3
3 1 1 3
3 3 3 3
처럼 두 가지가 나오고 갈색은 14개, 12개로 달라진다
그래서 주어진 갈색 갯수가 맞을경우에 리턴하도록 변경했다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90