[programmers]大数の作成
問題の説明
ある数字からk個の数字を削除しようとしたときに得られる最大の数字を取得しようとします.
たとえば、2つの数字が1924から削除された場合、[19,12,14,14,92,94,24]を作成することができる.このうち最大の数字は94です.
解関数のパラメータとして文字列形式で与えられた数値と削除する数値kを用いる.solution関数を完了し、numberからk個の数値を削除したときに作成できる最大数値を文字列で返します.
せいげんじょうけん
ソースコード
C++
#include <string>
#include <vector>
using namespace std;
string solution(string number, int k) {
string answer = "";
int index = -1;
int n = number.length();
for(int i=0;i<n-k;i++) {
char max = 0;
// 만들 수의 길이를 고려해
// k+i번째까지 중 최댓값을 찾아 answer에 추가
for(int j=index+1;j<=k+i;j++) {
if(max<number[j]) {
index = j;
max = number[j];
}
}
answer += max;
}
return answer;
}
java
テスト10でタイムアウトエラーが発生し、StringBuilderに変更されました.
class Solution {
public String solution(String number, int k) {
StringBuilder answer = new StringBuilder();
int index = -1;
int n = number.length();
for(int i=0;i<n-k;i++) {
char max = '0';
for(int j=index+1;j<=k+i;j++) {
if(max<number.charAt(j)) {
index = j;
max = number.charAt(j);
}
}
answer.append(max);
}
return answer.toString();
}
}
Reference
この問題について([programmers]大数の作成), 我々は、より多くの情報をここで見つけました https://velog.io/@minwest/Programmers-큰-수-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol