Swift랑 친해지기/programmers 풀기

[프로그래머스] 뒤에 있는 큰 수 찾기 (Swift)

데브킹덕 2023. 10. 12. 18:28

https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

- Stack 을 이용하여 현재 수보다 크지 못한 수들의 위치를 push해서 쌓아 올림

- 큰수가 생기면 result의 요소들을 다음으로 큰수로 변경 

 

* 7, 20~23 번 런타임, 실행초과 에러 = For문 중복 + 마지막 요소가 큰 수 일 경우 비효율 적일 수 있음

import Foundation

func solution(_ numbers:[Int]) -> [Int] {
    
    var result = Array(repeating: -1, count: numbers.count)
    
    var stack = [Int]()
    
    for i in 0..<numbers.count{
        
        while !stack.isEmpty && numbers[stack.last!] < numbers[i]{
            result[stack.popLast()!] = numbers[i]
        }
        stack.append(i)
    }
    
    return result
}