프로그래머스 > 코딩테스트 연습 > 탐욕법(Greedy) > 큰 수 만들기
import java.util.*;
class Solution {
StringBuilder answer;
public String solution(String number, int k) {
answer = new StringBuilder();
int[] num = new int[number.length()];
for (int i = 0; i < num.length; i++) {
num[i] = Integer.parseInt(number.substring(i, i+1));
}
int count = num.length - k;
int start = 0;
while (count > 0) {
start = func(num, count, start);
count--;
}
return answer.toString();
}
public int func(int[] n, int count, int start) {
int max = n[start];
int index = start;
for (int i = start; i <= n.length - count; i++) {
if (n[i] > max) {
max = n[i];
index = i;
}
}
answer.append(max);
return index+1;
}
}
테스트 1 〉 통과 (0.04ms, 75.8MB)
테스트 2 〉 통과 (0.05ms, 77MB)
테스트 3 〉 통과 (0.10ms, 76.5MB)
테스트 4 〉 통과 (0.96ms, 79.8MB)
테스트 5 〉 통과 (0.99ms, 77.7MB)
테스트 6 〉 통과 (10.74ms, 75.9MB)
테스트 7 〉 통과 (18.09ms, 85.1MB)
테스트 8 〉 통과 (59.74ms, 79.6MB)
테스트 9 〉 통과 (32.33ms, 103MB)
테스트 10 〉 통과 (1755.88ms, 115MB)
테스트 11 〉 통과 (0.03ms, 84.8MB)
테스트 12 〉 통과 (0.04ms, 74.2MB)
StringBuilder answer = new StringBuilder();
for (int i = 0; i < num.length; i++) { num[i] = Integer.parseInt(number.substring(i, i+1)); }
int count = num.length - k; int start = 0;
while (count > 0) { start = func(num, count, start); count--; }
return answer.toString();
public int func(int[] n, int count, int start) { int max = n[start]; int index = start; --- 중략 --- }
public int func(int[] n, int count, int start) { for (int i = start; i <= n.length - count; i++) { if (n[i] > max) { max = n[i]; index = i; } } --- 중략 --- }