스택/큐 단계의 첫번째 문제. 자료구조를 배운사람이라면 문제를 읽으면 어떤 것을 써야할지 알것이다. 이번문제에서 쓸 자료구조는 큐이다.
다만 Swift에서 스택이나 큐는 구현되어 있지 않으므로 구조체나 클래스 혹은 배열을 써서 대신해야 한다. 원래는 구조체를 써서 구현하려고 하였으나 오히려 더 복잡해져서 배열로 큐의 원리를 구현하였다.
myQueue에는 해당 작업이 완료되는데 걸리는 시간을 넣어둔다.
4 | 1 | 5 | 3 | 2 |
cursor는 큐에서 dequeue역할을 한다.
4 | 1 | 5 | 3 | 2 |
cursor
cursor에 해당하는 작업보다 현재 가리키고 있는 작업시간의 이하이면 count에 1을 더하고 cursor에 1을 더한고 answer에 count를 추가한다.
cursor에 해당하는 작업보다 더 크면 거기서 중단하고 커서를 이동시킨다.
4 | 1 | 5 | 3 | 2 |
cursor
이것을 반복하면 답이 나온다.
import Foundation
func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
var answer : [Int] = []
var myQueue : [Int] = []
var cursor = 0
for item in progresses.indices{
myQueue.append(((100-progresses[item]-1)/speeds[item])+1)
}
while cursor < myQueue.count {
var delay = myQueue[cursor]
var count = 0
while cursor < myQueue.count && myQueue[cursor] <= delay{
count += 1
cursor += 1
}
answer.append(count)
}
return answer
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
Swift) 2018 KAKAO BLIND RECRUITMENT - 뉴스 클러스터링 (0) | 2023.06.18 |
---|---|
프로그래머스 : 프린터(Swift) (0) | 2021.09.15 |
프로그래머스 : 베스트 앨범(Swift) (0) | 2021.09.13 |
프로그래머스 : 위장(Swift) (0) | 2021.09.11 |
프로그래머스: 전화번호 목록(Swift) (0) | 2021.09.10 |