개발의변화
프로그래머스 LV2 큰 수 만들기 본문
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42883#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해설
function solution(number, k) {
let stack = [];
let arr = number.split('').reverse();
//1924 ->> 4291
while(arr.length && k>0){
stack.push(arr.pop()) //4 3 2 3
while(stack[stack.length-1] < arr[arr.length-1] && k>0) {
stack.pop();
k = k-1;
}
}
if(k !== 0) stack = stack.slice(0, -k)
return stack.join('') + arr.reverse().join('')
}
처음 이 문제를 봤을 때 백트래킹 혹은 순열을 활용해서 구할려고 했으나 O(n**2)의 시간이 걸려 시간초과가 계속 났다.
스택을 활용해서 반대로 배열을 돌린다음 그 배열이 하향 곡선일 때는 계속 스택에 넣고 번쩍 상향 곡선이 그려진다면 스택에 맨 끝을 버리게 한다
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 LV2 삼각 달팽이 (0) | 2023.04.14 |
---|---|
프로그래머스 LV2 소수찾기 (0) | 2023.04.13 |
프로그래머스 LV2 2 x n 타일링 (0) | 2023.04.13 |
프로그래머스 LV2 질문목록 (0) | 2023.04.12 |
프로그래머스 LV2 프렌즈블록 (0) | 2023.04.11 |