-
백준 2493 탑Algorithm/BOJ 2021. 4. 22. 16:58728x90
출처: www.acmicpc.net/problem/2493
분류: Stack
접근방식
인덱스와 탑의 높이를 스택에 담아두고,
현재 빌딩의 높이가 인덱스의 탑보다 크면 스택에 담겨있는 인덱스에 현재 빌딩의 인덱스를 저장해두는 방식으로 해결했습니다.
해결방법
let n = Int(readLine()!)! let building = readLine()!.split(separator: " ").map { Int(String($0))! } var received = [Int](repeating: 0, count: n) var stack = [(idx: Int, top: Int)]() for (idx, top) in building.enumerated().reversed() { while !stack.isEmpty, top >= stack.last!.top { let (i, _) = stack.popLast()! received[i] = idx+1 } stack.append((idx, top)) } print(received.map({ String($0) }).joined(separator: " "))
배운점
'Algorithm > BOJ' 카테고리의 다른 글
백준 1922 네트워크 연결 (0) 2021.04.30 백준 1981 후위 표기식 (0) 2021.04.26 백준 1958 LCS 3 (0) 2021.04.22 백준 11049 행렬 곱셈 순서 (0) 2021.04.21 백준 17070 파이프 옮기기 1 (0) 2021.04.20