일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스택
- 암호수학
- 시간복잡도
- ftz
- windosw 문자열
- System
- Stack
- OSI
- 백준
- 재귀
- 자료구조
- LoB
- 정렬 알고리즘
- HTML
- 미로 탐색 알고리즘
- C
- PHP
- web
- pwnable.kr
- War Game
- 두근두근 자료구조
- level13
- 파일 시스템
- ftz level13
- 큐
- windosws wbcs
- 파이썬
- c언어
- Java
- SWiFT
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 프로그래머스 코딩테스트 연습 > 스택/큐 > 프린터 본문
Programming/Algorithm & Data Structure
[Swift] 프로그래머스 코딩테스트 연습 > 스택/큐 > 프린터
guswlsdk 2022. 5. 12. 11:40반응형
https://programmers.co.kr/learn/courses/30/lessons/42587
문제풀이
큐 첫번째 작업보다 우선순위가 더 높은 작업이 있다 ? 1번부터, 없으면 2번부터
1. 큐에 우선순위가 가장 높은 작업을 맨 앞으로 옮기기 이 때 location(인덱스)도 같이 움직여줘야함(값에 의존 X 위치에 의존 O)
2. 위 작업이 끝나면 맨 앞에 있는 작업을 출력(큐.removeFirst), 인쇄 순서를 나타내는 count += 1
3. location = 0 일 경우 내가 인쇄를 요청한 문서가 출력되었다는 의미 -> count 출력
코드
import Foundation
func solution(_ priorities:[Int], _ location:Int) -> Int {
var q = priorities
var loc = location
var count = 0
while !q.isEmpty{
var index = 1
while index < q.count{
if q[0] < q[index]{
// 우선순위가 높은 작업이 있을 때
q.append(q.removeFirst())
index = 1
if loc - 1 < 0 {
loc = q.count-1
}else{
loc -= 1
}
}else{
index += 1
}
}
q.removeFirst()
count += 1
if loc == 0{
break
}else{
if loc - 1 < 0 {
loc = q.count-1
}else{
loc -= 1
}
}
}
return count
}
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[Swift] 프로그래머스 코딩테스트 연습 > 깊이/너비 우선 탐색 > 타겟 넘버 (0) | 2022.05.16 |
---|---|
[Swift] 2020 KAKAO BLIND RECRUITMENT 문자열 압축 (0) | 2022.05.15 |
[Swift] 프로그래머스 코딩테스트 연습 > 스택/큐 > 기능개발 (0) | 2022.05.11 |
[Swift] 백준 10829 이진수 변환 / 재귀 /recursion (0) | 2021.07.22 |
[Swift] Data Structure recursion / hanoi / 자료구조 순환, 재귀 / 하노이 탑 (0) | 2021.07.08 |