알고리즘

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

박카스마시며코딩 2022. 6. 14. 16:56

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

 

저는 해당 문제를 그리디를 이용해 문제를 해결하였습니다.

먼저 저는 각각의 문자를 비교하여 앞에서부터 앞의 숫자가 뒤의 숫자보다 작다면 지웠습니다.

그리고 지운 횟수를 체크하면 이 값이 k보다 커지면 바로 for문에서 나오도록 구현하였습니다.

마지막으로 cnt가 k보다 작은데 for문이 끝나거나서 숫자가 모두 같거나 마지막 숫자를 지워야하는 경우가 존재하기 때문에 while문을 돌려 뒤에서부터 문자를 지워나갔습니다.

 

class Solution {
    public String solution(String number, int k) {
        String answer = "";
        StringBuilder sb = new StringBuilder(number);
        int cnt = 0;
        for(int i = 1 ; i < sb.length() ; i++){
            char prev = sb.charAt(i-1);
            char now = sb.charAt(i);
            if(prev < now){
                sb.deleteCharAt(i-1);
                if(++cnt >= k){
                    break;
                }
                i = Math.max(i-2,0);
            }
        }
        while(cnt < k){
            sb.deleteCharAt(sb.length()-1);
            cnt++;
        }
        answer = sb.toString();
        return answer;
    }
}