iOS 개발 공부

[Swift] 2493번 : 탑 본문

코딩테스트/백준

[Swift] 2493번 : 탑

물복딱복준복 2024. 1. 12. 21:37

for문으로 풀면 시간초과가 걸려서 stack으로 풀었습니다.

문제에선 오른쪽에서 왼쪽으로 진행되어서 입력받는 역순으로 풀었었는데 반대로 생각해보면

입력받았을 때 왼쪽에 수신을 받는 친구가 없다면 입력받은 탑이 현재 가장 높은 탑이되어버리니

다음 입력에서는 현재 입력받은 탑을 기준으로 왼쪽에 있는 탑들은 필요가 없어지는 것입니다

import Foundation

let n = Int(readLine()!)!
let arr = readLine()!.components(separatedBy: " ").compactMap { Int($0) }


var stack: [(height: Int, index: Int)] = [(100000001, 0)]

for index in 0..<arr.count {
    let height = arr[index]
    
    while !stack.isEmpty && stack.last!.height < height {
        stack.removeLast()
    }
    print(stack.last!.index, terminator: " ")
    stack.append((height, index+1))
}

'코딩테스트 > 백준' 카테고리의 다른 글

[Swift] 1012번 : 유기농 배추  (0) 2024.03.18
[Swift] 1697번 : 숨바꼭질  (0) 2024.03.18
[Swift] 2178번 : 미로탐색  (0) 2024.02.05
[Swift] 1926번 : 그림  (0) 2024.02.05
[Swift] 10773번 : 제로  (0) 2024.01.12