프로그래머스 LEVEL 2(큰 수 만들기)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-24
- 해결 방법 :
- stack을 통해 숫자의 대소를 비교
- 현재 인덱스의 값이 이전 인덱스의 값(stack의 top)보다 크고, 지워야할 k개의 수가 남아 있는 동안 stack의 최상단 pop() 및 count 증가
- stack의 현재 인덱스 값 push()
- 반복문 종료 후 count의 수가 k와 같지 않다면(계속해서 현재 인덱스의 값이 이전 인덱스의 값보다 작거나 같은 경우) 같을때 까지 stack의 최상단 pop()
- 회고 :
- 처음에 문자열로 풀려고 했는데 지워야할 숫자가 나올때 마다 인덱스가 달라져서 어려웠다.
- 지우는 경우보다 추가하는 경우가 편하다면 stack()을 애용하자..
-
코드
function solution(number, k) { let count = 0; const stack = [number[0]]; for (let i = 1; i < number.length; i++) { const current = number[i]; while (count < k && stack[stack.length - 1] < current) { stack.pop(); count++; } stack.push(current); } while (count !== k) { stack.pop(); count++; } return stack.join(''); }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges