상세 컨텐츠

본문 제목

[프로그래머스] 큰 수 찾기

Algorithm

by 쑤야. 2024. 3. 5. 09:14

본문

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

 

프로그래머스

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

programmers.co.kr

 

접근


  • 숫자에서 몇 개의 숫자를 제거해 만들 수 있는 가장 큰 수를 찾아야 하며, 숫자의 정렬 순서는 바뀌면 안된다.
     → 순서대로 탐색해야 한다. 
  • 가장 큰 수를 만들기 위해서는 앞에 위치하는 숫자의 크기가 커야 한다.
    스택과 반복문을 활용해 새로운 숫자보다 기존의 숫자가 작은 경우 모두 제거해준다.
  • 뒤에 남아있는 숫자 개수 + result에 저장된 숫자 개수가 원래 숫자에서 k개를 제거한 숫자보다 큰 경우에만 제거할 수 있다.

 

코드


import Foundation

func solution(_ number:String, _ k:Int) -> String {

    var result = [String]()
    let number = Array(number).map{ String($0) }

    for i in 0..<number.count {
        while !result.isEmpty && result.count+number.count-i > number.count-k && Int(result.last!)! < Int(number[i])! {
            result.removeLast()
        }
        result.append(number[i])
    }
    
    if result.count > number.count-k {
        result.removeLast()
    }
    
    return result.joined()
}

관련글 더보기