Where who wants to meet someone

백준 Swift [10773] 제로 본문

백준 알고리즘 문제 기록/스택, 큐, 덱

백준 Swift [10773] 제로

Lust3r 2023. 8. 22. 12:21
728x90

난이도

실버 IV

 

문제

https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

내 답안

var accountBook = [Int]()

for _ in 1...Int(readLine()!)! {
    let input = Int(readLine()!)!
    switch input {
    case 0:
        accountBook.removeLast()
    default:
        accountBook.append(input)
    }
}

print(accountBook.reduce(0, +))
  • 빈 스택인 accountBook 초기화
  • 횟수만큼 돌면서 입력값이 0인 것과 0이 아닌(default)것만 분기 처리를 하여 각각 removeLast, append를 수행
    (removeLast의 복잡도는 O(1))
  • for문이 끝나면 reduce를 통해 모든 값을 더한 값을 출력하여 해결