유블로그

[프로그래머스] 큰 수 만들기 본문

알고리즘

[프로그래머스] 큰 수 만들기

yujeong kang 2020. 12. 14. 17:38

프로그래머스 level 2 큰 수 만들기

 

제거할 인덱스를 k개 고르는 조합(재귀) 코드를 사용했는데 시간초과 때문에 처음부터 다시 짰다.

StringBuilder를 사용했고,

현재 내 위치와 나의 바로 다음 위치의 숫자 크기를 비교하여 내가 더 작으면 나를 StringBuilder 에서 지우고 다시 그 위치부터 나의 다음 위치와 비교하는 방식이다.

그렇게 k개의 숫자를 제거하게 되면 끝냈다.

이렇게 간단한 코드를 생각을 못해서 약 3시간? 혹은 좀 더 ? 걸렸던 듯..

class Solution {
    public String solution(String number, int k) {
        	StringBuilder sb = new StringBuilder(number);
		int N = number.length();
		
		int cur = 0;
		while(true) {
			if(k <= 0) break;
			
			if(cur == N-1) {
				return sb.substring(0, N-k);
			}
			if(sb.charAt(cur)-'0' < sb.charAt(cur+1)-'0') {
				sb.delete(cur, cur+1);	
				N--;
				k--;
				if(--cur < 0) cur = 0;
			}
			else cur++;
		}
		
		return sb.toString();
    }
}