Algorithm

Algorithm) Programmers- 큰 수 만들기 swift

행복하고 싶은 사람 2022. 11. 8. 12:01

https://school.programmers.co.kr/learn/courses/30/lessons/42883

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

완전 탐색으로하면 시간초과 날게 뻔해서 어떻게 해야할까 오랜 시간 생각하다가

결국 검색해서 stack 쓰는 아이디어를 보고 풀었습니다.. 나중에 다시 풀어 봐야겠습니다

방법은 간단합니다 현재 값(n)보다 작은 Stack 안에 있으면 지우고 append하는 방식입니다 

그리고 이후에 k개만큼 빼지 못했을 경우에는 뒤에서부터 딱딱 빼줍니다! 

아 numberArr를 만들때 String으로 형변환 해준 것은 joined()를 사용하기 위해서 바꿔줬습니다 

import Foundation

func solution(_ number:String, _ k:Int) -> String {
    var numberArr = number.map({ String($0) })
    var k = k
    var stack = [String]()
    
    for n in numberArr {
        while !stack.isEmpty , k > 0 , stack.last! < n {
            stack.removeLast()
            k -= 1
        }
        stack.append(n)
    }
    while k > 0 {
        stack.removeLast()
        k -= 1
    }
    return stack.joined()
}