반응형
자세한 문제는 여기서 확인
이 문제는 문제를 이해하는데 많은 시간을 소모했고 구글링을 통해서 문제를 이해하려해도 문제가 이해가 되지 않았습니다.
아무튼 이 문제의 핵심은
- 현재 높이 보다 이전 블럭이 낮아질때까지 계속 제거 해 나감.
- 현재 높이랑 이전 블럭이 같으면 같은 블럭으로 통합 가능 하기 때문에 그냥 유지함.
위 2개 입니다.
문제에서 주어진 예제로 설명하자면
H[0] = 8, H[1] = 8, H[2] = 5, H[3] = 7, H[4] = 9, H[5] = 8, H[6] = 7, H[7] = 4, H[8] = 8 일 경우
8 count 1
{8, 8} 이때는 높이가 같기 때문에 count는 그래도 입니다.
{8, 8}, 5 인데 5가 8보다 작기 때문에 8을 뺸다. 그리고 새로운 5가 들어갔기 때문에 count는 2
5, 7 count 3
5, 7, 9 count 4
5, 7, 8 count 5
5, {7, 7} count 5
4 count 6
4, 8 count 7 이 됩니다.
문제를 이해하면 어려운 code는 아니기 때문에 code를 만들면
fun solution(H: IntArray): Int {
val stack = mutableListOf<Int>()
var count = 0
for(i in H.indices){
while(!stack.isEmpty() && stack.peek() > H[i]){
stack.pop()
}
if(stack.isEmpty() || stack.peek() < H[i]) {
stack.push(H[i])
count++
}
}
return count
}
fun MutableList<Int>.push(num:Int){
this.add(num)
}
fun MutableList<Int>.pop() : Int{
val result = this.last()
this.removeAt(this.size-1)
return result
}
fun MutableList<Int>.peek() : Int = this.last()
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Lesson 10 - MinPerimeterRectangle (0) | 2020.01.27 |
---|---|
Lesson 6 - NumberOfDicIntersection (0) | 2020.01.20 |
Lesson7 - fish (0) | 2020.01.20 |
Lesson 7 - Nesting (0) | 2020.01.07 |
Lesson10 - Peaks (0) | 2020.01.06 |