07.28에 푼 문제입니당🌷
큰 수 만들기
function solution(number, k) {
var answer = '';
const numlist = []
let temp = [...number]
let count = number.length - k
temp.map(num=>numlist.push(parseInt(num)))
temp=numlist.slice().sort()
let slicenum= []
//1 가능한 숫자열 자르기
while(slicenum.length<count){
let max = temp.pop()
let index = numlist.indexOf(max)
slicenum=numlist.slice(index)
}
//2 숫자열 안 숫자 삭제
while(slicenum.length!==count){
for(let i =0;i<slicenum.length-1;i++){
if(slicenum[i]<slicenum[i+1]){
slicenum.splice(i,1)
break
}
}
}
slicenum.map(num=>answer+=String(num))
return answer;
}
아이패드를 집에 두고와서,, 종이에 끄적였담,,,,😂
이 풀이법은 10,12번 시간초과로 통과하지 못했다.
function solution(number, k) {
var answer = '';
const numbers = [...number]
const stack = []
let count = 0
for(let i = 0;i<numbers.length;i++){
let num = parseInt(numbers[i])
while(num>stack[stack.length-1]&&stack.length!==0&&count<k){
stack.pop()
count++
}
stack.push(num)
}
if(count===0) stack.pop()
stack.map(num=>answer+=String(num))
return answer;
}
두번째 풀이법!
stack을 이용한다.
stack에 차례로 값을 입력한다. 바로 앞에 있는 숫자가 더 작으면 작은 숫자를 pop 하고 입력받은 숫자보다 큰 숫자가 앞에 오도록 진행한다.
삭제한 숫자 값이 k개가 되면 끝난다!
결과는 모두 성공이다! 확실히 시간도 줄었다.🔥🔥