코드는 Swift로 작성하였습니다.
제가 직접 작성한 코드라 최적의 코드가 아닐 수 있음을 알려드립니다. 🐹
문제는 저작권 관련 문제가 있을 수 있어서 적어두지 않았습니다.
처음 나의 생각
사람이 남아있어도 상관없기 때문에
공포도가 낮은 사람 순서대로 그룹을 결성하면 될 것 같다.
let n = 5
var numbers = [2,2,2,3,5,7]
// 낮은 사람부터 확인하기위해 오름차순 정렬
numbers.sort()
var result = 0
var storage: [Int] = []
print(numbers)
for i in numbers {
if i <= storage.count + 1 {
storage = []
result += 1
}
else {
// 그룹을 만들지 못하면 차곡차곡 쌓아둔다
storage.append(i)
}
}
print(result)
나의 풀이 ...
굳이 저렇게 할 필요가 없다는 것을 아래에서 확인하실 수 있습니다 ^-^
메모리 많이 잡아먹는 내 풀이 .......
let n = 5
var data: [Int] = [1,2,4,2,3]
data.sort()
var result = 0
var count = 0
for i in data {
count += 1
if count >= i {
result += 1
count = 0
}
}
print(result)
동빈님 파이썬 코드 참고하여 변경