[プログラマー]貪欲法-製造大数
最初はスタックで解決したいと思っていました.すべての数値をスタックに入れ、1つずつ減算し、その値がスタックのtop値と比較されると、それ以上の場合は答えに追加します.そうでなければ、カウント変数に1を追加し、kと同じ場合はbreakを追加し、最後にスタックに残っているすべての値を答えに追加します.
(私もどういう意味か分かりませんが...まず問題の例は成功しました.でも採点結果は惨憺たるものでした.😥)
public String solution(String number, int k) {
String answer = "";
int len = number.length();
Stack<Integer> stack = new Stack<>();
for (int i = len-1; i >= 0; i--) {
stack.push(number.charAt(i)-'0');
}
int count = 0;
while (true) {
if (count == k) {
while (!stack.isEmpty()) answer += String.valueOf(stack.pop());
break;
}
int tmp = stack.pop();
if (!stack.isEmpty() && tmp >= stack.peek() ) {
for (int i = 0; i < answer.length(); i++) {
if (answer.charAt(i)-'0' < stack.peek()) {
count += answer.length();
answer = "";
}
}
answer += String.valueOf(tmp);
}
else {
count++;
}
}
return answer;
}
Reference
この問題について([プログラマー]貪欲法-製造大数), 我々は、より多くの情報をここで見つけました https://velog.io/@ssonzm/프로그래머스-탐욕법greedy-큰-수-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol