728x90
https://www.acmicpc.net/problem/10828
스택 개념을 이용하면 된다.
스택 개념은 계속 나왔으니 설명은 안하겠고 여기서 얻어갈 수 있는 것은 명령어를 어떻게 처리 하느냐이다.
import Foundation
let N = Int(readLine()!)!
var stack: [Int] = []
for _ in 1...N {
let input = readLine()!.split(separator: " ").map{String($0)}
// 함수처럼 호출하는 법은 알지만 명령을 (특히 push 1)어떻게 처리하는지 알 수 있었음.
switch input[0] {
case "push":
push(Int(input[1])!) // 이 부분을 알 수 있었음. input이 어차피 배열로 저장되고 push + " " + 1 처럼 split으로 띄어진 값을 하나하나 다른 배열 인덱스에 저장해서 인식
break
case "pop":
print(pop())
break
case "size":
print(size())
break
case "empty":
print(empty())
break
case "top":
print(top())
break
default:
break
}
}
// 스택 부분 구현
func push(_ x: Int) {
stack.append(x)
}
func pop() -> Int {
if let pop = stack.popLast() {
return pop
}else {
return -1
}
}
func size() -> Int {
return stack.count
}
func empty() -> Int {
if stack.isEmpty {
return 1
}else {
return 0
}
}
func top() -> Int {
if let last = stack.last {
return last
} else {
return -1
}
}
명령어 처리 부분은 주석을 참고하자.
728x90
'PS' 카테고리의 다른 글
10845번 큐 /swift (0) | 2022.10.03 |
---|---|
11050번 이항계수 1 / swift (0) | 2022.10.03 |
9012번 괄호 / swift (0) | 2022.10.02 |
2609 최대공약수와 최소공배수 / swift (0) | 2022.10.02 |
2164번: 카드 2 / swift (0) | 2022.10.02 |