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
}
'Swift랑 친해지기 > programmers 풀기' 카테고리의 다른 글
[프로그래머스] 기사단원의 무기 (Swift) (1) | 2023.10.31 |
---|---|
[프로그래머스] 대충 만든 자판 (Swift) (0) | 2023.10.30 |
[프로그래머스] 연속된 부분 수열의 합 (Swift) (1) | 2023.09.06 |
[프로그래머스] N개의 최소공배수 (Swift) (0) | 2023.09.05 |
[프로그래머스] 최댓값과 최솟값 (Swift) (0) | 2023.07.24 |