일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Algorithm
- 백준
- 애플디벨로퍼아카데미
- Playground #Swift
- Apple
- HIG
- HumanInterfaceGuideline
- 코딩테스트
- Xcode
- POSTECH
- 코딩트리조별과제
- AppleDeveloperAcademy
- 코드트리
- 1935
- SWiFT
- HumanInterfaceGuidelines
Archives
- Today
- Total
WonniOS
[Swift] 7. 백준 10845번: 큐 본문
머 ... 그냥 기본적인 큐(FIFO) 문제다.
문제 링크
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
풀이
각각의 기능들을 함수로 만들어서 switch로 명령어를 배분해준 다음, 함수를 선언했다.
그냥 문제에서 원하는대로 짰는데, 계속 실패 뜨길래 살짝 멘붕이 왔었다.
원인은 바로 push 함수에서 입력받은 명령(input)을 input.last로 받았는데, 그렇게 받으니까 두자리 이상 숫자를 정확히 못받는 거였다.
예를들어 128을 input에 넣으면 8만 push된다.
.last가 띄어쓰기를 기준으로 반환되는 건 줄 알았는데 이건 나의 오해였다.
전체 코드
import Foundation
let num = Int(readLine()!)!
var array : [Int] = []
func push(arr: inout Array<Int>, input: String) {
var number = input.split(separator: " ")
arr.append(Int(number.popLast()!)!)
}
func pop(arr: inout Array<Int>) {
!arr.isEmpty ? print(arr.removeFirst()) : print("-1")
}
func size(arr:Array<Int>) {
print(arr.count)
}
func empty(arr:Array<Int>) {
arr.isEmpty ? print("1") : print("0")
}
func front(arr:Array<Int>) {
!arr.isEmpty ? print(arr.first!) : print("-1")
}
func back(arr:Array<Int>) {
!arr.isEmpty ? print(arr.last!) : print("-1")
}
for _ in 0..<num {
let order = readLine()!
switch order {
case "pop":
pop(arr: &array)
break
case "size":
size(arr: array)
break
case "empty":
empty(arr: array)
break
case "front":
front(arr: array)
break
case "back":
back(arr: array)
default:
push(arr: &array, input: order)
}
}
마무리
1. 함수 내에서 parameter를 변경하려면 parameter 선언할 때, inout을 써줘야 한다.
2. .last 주의 !
'Algorithm' 카테고리의 다른 글
[Swift] 9. 백준 10866번: 덱 (0) | 2023.03.08 |
---|---|
[Swift] 8. 백준 1158번: 요세푸스 문제 (0) | 2023.03.07 |
[Swift] 6. 백준 1406번: 에디터 (0) | 2023.02.22 |
[Swift] 5. 백준 1874번: 스택 수열 (0) | 2023.02.15 |
[Swift] 4. 백준 9012번: 괄호 (0) | 2023.02.12 |