요구능력
큐
문제풀이
최악의 경우 시간복잡도가 O(n^2)이지만, 배열길이들이 100개이하라고 해서 아무리 최악의 경우라도 10000번이라 그냥 브루트포스로 풀었다.
Swift의 경우 배열에 넣어놓고 removeFirst()를 사용하면 큐처럼 FIFO방식으로 구현이 가능하다.
이 문제는 시간복잡도를 크게 고려하지 않아도 풀 수 있도록 만들어놔서 상관없지만, 나중가면 removeFirst()의 O(n)의 시간복잡도가 아주 골치아파지니 자주 사용은 안하는걸 권해드린다.
나는 queue가 비어있지 않으면 계속 반복하면서 queue에 speed만큼을 더해주었고 그 queue를 맨처음부터 돌리면서 100이넘으면 계속 탐색(count에 1을 더하고 queue와 speed에서 FIFO방식으로 맨앞을 빼주었다.)하고 100이넘지 않으면 그 뒤에는 가지도 않도록 break를 잡아주었다.
그리고 count가 1을 넘어갈경우에만 result에 추가해줬다.
후기
그냥간단한 브루트포스 큐 문제같다.
코드
func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
var result = [Int]()
var queue = progresses
var speed = speeds
while !queue.isEmpty{
var count = 0
for i in 0..<queue.count{
queue[i] += speed[i]
}
for i in queue{
if i >= 100 {
count += 1
queue.removeFirst()
speed.removeFirst()
}else{
break
}
}
if count >= 1{
result.append(count)
}
}
return result
}
'Algorithm > 문제풀이_프로그래머스' 카테고리의 다른 글
[Swift][프로그래머스][Queue] 다리를 지나는 트럭 (0) | 2022.04.12 |
---|---|
[Swift][Programmers][Queue] 프린터 (0) | 2022.04.12 |
[Swift][프로그래머스][DFS] 타겟 넘버 (0) | 2022.03.14 |
[Swift][백트래킹][LV_3] 양과 늑대 (0) | 2022.02.26 |
[Swift][소수][LV_2] K진수에서 소수개수 구하기 (0) | 2022.02.25 |
댓글