https://school.programmers.co.kr/learn/courses/30/lessons/42883
풀이 - 나의 생각
처음에는
조합을 사용해야 하나 했지만
주어지는 number의 길이가 2자리 이상, 1,000,000자리 이하이기 때문에
다른 방법을 생각해야 했습니다.
코드
Stack 활용 ver
import java.util.Stack;
class Solution {
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);
while (!stack.isEmpty() && stack.peek() < c && k-- > 0) {
stack.pop();
}
stack.push(c);
}
for (int i=0; i<result.length; i++) {
result[i] = stack.get(i);
}
return new String(result);
}
}
범위 탐색 ver
class Solution {
public String solution(String number, int k) {
String answer = "";
int start = 0, end = k, maxIndex = 0, max = 0, flag = 0;
String[] nums = number.split("");
flag = nums.length - k;
while(answer.length() < flag){
max = -1;
for(int i = start; i <= end; i++){
int num = Integer.parseInt(nums[i]);
if(max < num){
max = num;
maxIndex = i;
if(num == 9) break;
}
}
k -= (maxIndex - start);
if(k == 0){
answer+=number.substring(maxIndex, number.length());
break;
}
start = maxIndex+1;
answer+=nums[maxIndex];
end++;
}
return answer;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
코딩테스트 연습 > 전력망을 둘로 나누기 (완탐, BFS) (0) | 2024.02.22 |
---|---|
2022 KAKAO TECH INTERNSHIP > 두 큐 합 같게 만들기 - JAVA (0) | 2024.02.06 |
코딩테스트 연습 > 다리를 지나는 트럭 - JAVA (Queue) (0) | 2024.02.04 |
코딩테스트 연습 > 소수 찾기 (순열) (0) | 2024.01.29 |
월간 코드 챌린지 시즌1 > 쿼드압축 후 개수 세기 - JAVA (분할 정복) (0) | 2024.01.22 |