코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
스택을 활용하여 풀 수 있는 문제이다.
위 과정을 통해 나온 결과값의 역순이 정답이다.
6번 과정을 하는 이유는
number = 1111
k = 2
위와 같은 케이스가 들어올 경우
계속 같기때문에 pop과정을 넘기게되어 결과값이 1111이 되버린다. 하지만 k만큼 꼭 빼야하므로
뒤에서 pop해서 결과값이 11이 나오도록 한다.
// [프로그래머스] 큰 수 만들기 (Java) import java.util.*; class Solution { public String solution(String number, int k) { String answer = ""; int count = 0; Stack<Integer> s = new Stack<Integer>(); StringBuilder sb = new StringBuilder(); for(int i = 0; i < number.length(); i++){ int value = (number.charAt(i) - '0'); while(true){ if(s.size() == 0){ s.add(value); break; } if(count >= k || s.peek() >= value){ s.add(value); break; } if(s.peek() < value){ s.pop(); count++; } } } while(count != k){ s.pop(); count++; } while(!s.isEmpty()){ sb.append(s.pop()); } answer = sb.reverse().toString(); return answer; } }
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.