하루에 한 문제

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

알고리즘/프로그래머스

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

dkwjdi 2020. 12. 29. 21:42

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

 

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

 

programmers.co.kr

class Solution {
	    public String solution(String number, int k) {
	        StringBuilder answer = new StringBuilder(); 
	        int size=number.length();
	        
	        int idx=0;
	        for(int len=size-k; len>0 ; len--) {
	        	int num=0;
	        	for(int i=idx; i<=size-len; i++) {
	        		//System.out.println(number.charAt(i)-'0');
	        		if(num<number.charAt(i)-'0') {
	        			num=number.charAt(i)-'0';
	        			idx=i+1;
	        		}
	        	}
	        	answer.append(num);
	        }
	        return answer.toString();
	    }
	}

소요시간 : 40분

 

우선 로직을 살펴보면

 

number : 4177252841

k : 4

 

number가 10자리이고 k가 4니까 6자리를 구해야합니다!

 

그러면 뒤에 5자리만 남겨놓고 앞에서 가장 큰 수를 구해줍니다! 

수를 구했다면 그 수 다음부터 인덱스를 시작합니다

그리고 다시 뒤에 4자리만 남겨놓고 가장 큰 수를 구해줍니다! 반복하면 끝!

 

StringBuilder를 씁시다...

String으로 += 해서 하니까 시간초과 뜨는데 StringBuilder.append 사용하니까 시간초과가 안뜨네요!!

 

String += 사용

 

StringBuilder.append 사용

오늘도 하나 배워갑니다~

Comments