[Lv. 2] 뒤에 있는 큰 수 찾기프로그래머스/Level 22023. 7. 24. 13:51
Table of Contents
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/154539
난이도 : Level.2
언어 : Kotlin
문제 설명 :
정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
제한 사항 :
- 4 ≤ numbers의 길이 ≤ 1,000,000
- 1 ≤ numbers[i] ≤ 1,000,000
입출력 예 :
numbers | result |
[2, 3, 3, 5] | [3, 5, 5, -1] |
[9, 1, 5, 3, 6, 2] | [-1, 5, 6, 6, -1, -1] |
다른 사람의 풀이 :
import java.util.Stack
class Solution {
fun solution(numbers: IntArray): IntArray {
val answer = IntArray(numbers.size) { -1 }
val stack = Stack<Int>()
var index = 0
numbers.forEachIndexed { i, it ->
while (index <= i) {
val topNum = if (stack.isNotEmpty()) stack[stack.lastIndex] else -1
when {
stack.isEmpty() || it <= numbers[topNum] -> stack.add(index++)
else -> {
answer[topNum] = it
stack.removeLast()
}
}
}
}
return answer
}
}
풀다가 안풀려서 다른 사람의 풀이를 보았다. 근본적으로 내 풀이와 달랐던 점은 비교의 접근 방식이었던 것 같다.
'프로그래머스 > Level 2' 카테고리의 다른 글
[Lv. 2] 롤케이크 자르기 (0) | 2023.07.24 |
---|---|
[Lv. 2] 숫자 변환하기 (0) | 2023.07.24 |
[Lv. 2] 모음 사전 (0) | 2023.07.21 |
[Lv. 2] 오픈채팅방 (0) | 2023.07.21 |
[Lv. 2] 주차 요금 계산 (0) | 2023.07.20 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!