새소식

인기 검색어

프로그래머스/Lv.2

[Swift] 택배상자

  • -
import Foundation

func solution(_ order:[Int]) -> Int {
    var stack = [Int]()
    var number = 1
    var answer = 0

    for i in 0..<order.count {
        while number <= order[i] {
            stack.append(number)
            number += 1
        }
        if stack.last! == order[i] {
            _ = stack.popLast()
            answer += 1
        } else {
            break
        }
    }

    return answer
}

func solution2(_ order:[Int]) -> Int {
    var index = 0
    var mainBeltBox = 1
    var secondBelt: [Int] = []

    while index < order.count {
        // 메인벨트에 있는 상자보다 order[index]의 상자가 크면 세컨벨트로 옮긴다
        if mainBeltBox < order[index] {
            secondBelt.append(mainBeltBox)
            mainBeltBox += 1
        // 메인벨트에 있는 상자와 order[index]의 상자와 같다면 메인벨트에서 상자를 꺼내고 다음 order로 넘어간다
        } else if mainBeltBox == order[index] {
            index += 1
            mainBeltBox += 1
        // 세컨벨트에 상자가 있을 때
        } else if 0 < secondBelt.count {
            if order[index] == secondBelt.popLast()! { index += 1 }
            else { break }
        } else { break }
    }
    
    return index
}

 

'프로그래머스 > Lv.2' 카테고리의 다른 글

[Swift] 괄호 변환  (0) 2023.06.17
[Swift] 전력망 둘로 나누기  (0) 2023.06.17
[Swift] 두 큐 합 같게 만들기  (0) 2023.06.17
[Swift] 메뉴 리뉴얼  (0) 2023.06.17
[Swift] [3차] 방금그곡  (0) 2023.05.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.