새소식

인기 검색어

백준/골드

[Swift] 2493번 : 탑

  • -

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] 5427번 : 불  (0) 2024.03.18
[Swift] 7569번 : 토마토  (0) 2024.03.18
[Swift] 10026번 : 적록색약  (0) 2024.03.18
[Swift] 4179번 : 불!  (0) 2024.03.18
[Swift] 7576번 : 토마토  (0) 2024.03.18
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.