programmers.co.kr/learn/courses/30/lessons/42883
k 가 0이 될때 까지 앞서 들어온 값들과 비교해가면서 큰수를 만든다고 생각하면된다.
수 = 1924, k= 2인 경우
1입력 - {1}
9입력 - {9} (기존에 있던 1을 제거됨)
2입력 - {9, 2}
4입력 - {9, 4} (기존에 있던 2을 제거됨)
// 프로그래머스 큰수 만들기 문제
class BiggestNumber {
public String solution(String number, int k) {
char[] result = new char[number.length() - k];
Stack<Character> stack = new Stack<>();
for(int i = 0; i < number.length(); i++){
char c = number.charAt(i);
// stack에 있는 값들과 입력받은값을 비교후 입력받은 값보다 작은 값은 스택에서 꺼냄
while(!stack.isEmpty() && stack.peek() < c && k >= 1) {
stack.pop();
k -= 1;
}
stack.push(c);
}
for(int i = 0; i < result.length; i++) {
result[i] = stack.get(i);
}
return new String(result);
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 큰 수 문제 - 자바 (0) | 2021.03.13 |
---|---|
프로그래머스 - 베스트 앨범 문제 - 자바 (0) | 2021.03.13 |
프로그래머스 - 조이스틱 문제 - 자바 (0) | 2021.03.01 |
프로그래머스 - 디스크 컨트롤러 문제 - 자바 (0) | 2021.03.01 |
프로그래머스 - 더 맵게 문제 - 자바 (0) | 2021.03.01 |