[프로그래머스] 배열 만들기 4

devel_liz·2024년 12월 2일
1

코딩테스트

목록 보기
18/45

🗒 문제



📝 나의 문제풀이

class Solution {
    fun solution(arr: IntArray): IntArray {
        var i = 0
        var stk: IntArray = intArrayOf()
        
        while(i < arr.size){
            if(stk.isNotEmpty() && stk.last()>= arr[i]){
                stk = stk.filter { it != stk.last() }.toIntArray()
            }else{
                    stk = stk + arr[i]
                     i++
            }

        }

         return stk
    }
}

📝 다른 사람의 문제 풀이

import java.util.*

class Solution {
    fun solution(arr: IntArray): Stack<Int> {
        val stack = Stack<Int>()
        var i = 0

        while (i < arr.size) {
            if (stack.empty() || stack.peek() < arr[i]) {
                stack.push(arr[i])
                i++
            } else if (stack.peek() >= arr[i]) {
                stack.pop()
            }
        }
        return stack
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • Stack<Int>

    • Java의 Stack 클래스는 Vector를 상속받아 LIFO (Last In, First Out) 방식으로 작동하는 자료구조입니다.
      • 예시 설명: 보면 스택을 초기화하며, 정수형 데이터를 저장합니다.
    val stack = Stack<Int>() // 빈 정수형 스택 생성
    
  • empty()

    • 비어 있는지 확인하는 함수입니다.
      • 예시 설명: 스택이 비었으면 true, 비어 있지 않으면 false를 반환합니다.
      			if (stack.empty()) {
                    println("스택이 비어 있습니다.")
      			}
  • peek()

    • 스택의 가장 위에 있는 요소(마지막으로 추가된 요소)를 반환하지만, 제거하지는 않습니다.
    • 스택의 최상위 값을 확인하는 데 사용됩니다.
    • 주의: 스택이 비어 있으면 예외(EmptyStackException)가 발생합니다.
      if (!stack.empty()) {
        println("최상위 요소: ${stack.peek()}")
      }
  • push()

    • 스택의 맨 위에 새로운 요소를 추가합니다.

      	import java.util.*
      
      	fun main() {
        // 1, 2, 3, 4, 5가 들어 있는 스택 생성
        val stack = Stack<Int>()
        stack.push(1)
        stack.push(2)
        stack.push(3)
        stack.push(4)
        stack.push(5)
      
        println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5]
      
        // 스택에 10을 추가
        stack.push(10)
      
        println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5, 10]
      }
  • pop()

    • 스택의 맨 위에 있는 요소를 반환하고 제거합니다.

    • 데이터를 꺼내면서 스택에서 삭제합니다.

    • 주의: 스택이 비어 있으면 예외(EmptyStackException)가 발생합니다.

      	import java.util.*
      
      	fun main() {
        // 1, 2, 3, 4, 5가 들어 있는 스택 생성
        val stack = Stack<Int>()
        stack.push(1)
        stack.push(2)
        stack.push(3)
        stack.push(4)
        stack.push(5)
      
        println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5]
      
        // pop()을 사용하여 스택에서 숫자 하나를 꺼냄
        val poppedValue1 = stack.pop()
        println("꺼낸 값: $poppedValue1") // 출력: 5
        println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4]
      
        // 또 다른 pop() 호출
        val poppedValue2 = stack.pop()
        println("꺼낸 값: $poppedValue2") // 출력: 4
        println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3]
      }
profile
Android zizon

0개의 댓글

관련 채용 정보