프로그래머스(큰 수 만들기)

E O·2021년 4월 17일
0

문제

코드

Stack Overflow 코드
  
import java.util.*;

class Solution {
  private List<Integer> result;
  private int num[];
  
  public void makeMaxNum(int startIdx, int endIdx){
      if(endIdx == num.length){
          return;
      }

      int max = -1;
      int idx = 0;
      for(int i = startIdx; i <= endIdx; i++){
          if(max < num[i]){
              idx = i;
              max = num[i];
              //if(num[i] == 9) break;
          }
      }

      result.add(max);
      makeMaxNum(idx + 1, endIdx + 1);
  }

  public String solution(String number, int k) {
      result = new ArrayList<Integer>();
      num = new int[number.length()];
      for(int i = 0; i < number.length(); i++){
          num[i] = Integer.parseInt(number.substring(i, i + 1));
      }

      makeMaxNum(0, k);
      String answer = "";
      for(int i = 0; i < result.size(); i++){
          answer += result.get(i);
      }
      
      return answer;
  }
}
성공 코드
import java.util.*;

class Solution {
  private List<Integer> result;
  private int num[];
  
  public String solution(String number, int k) {
      result = new ArrayList<Integer>();
      num = new int[number.length()];
      for(int i = 0; i < number.length(); i++){
          num[i] = Integer.parseInt(number.substring(i, i + 1));
      }

      int startIdx = 0;
      int endIdx = k;
      while(endIdx != num.length) {
          int idx = 0;
          int max = -1;
          for (int i = startIdx; i <= endIdx; i++) {
              if (num[i] == 9) {
                  idx = i;
                  max = num[i];
                  break;
              }
              if (max < num[i]) {
                  idx = i;
                  max = num[i];
              }
          }

          result.add(max);
          startIdx = idx + 1;
          endIdx += 1;
      }
      
      String answer = "";
      for(int i = 0; i < result.size(); i++){
          answer += result.get(i);
      }
      
      return answer;
  }
}  
profile
개발 기록용 블로그

0개의 댓글