본문 바로가기
자료구조 & 알고리즘/문제풀이

큰 수 만들기 - 프로그래머스 (Java, Level 2)

by 넬준 2022. 2. 18.

 

class Solution {
    public String solution(String number, int k) {
        StringBuilder sb = new StringBuilder();

        int length = number.length();
        int[] intArr = new int[length];
        //한 cycle에서의 최댓값의 index, 다음 loop 때 index+1부터 탐색
        //index+1부터 시작하니까 0부터 시작하기 위해 -1로 초기화
        int index = -1; 
        /한 cycle에서의 최댓값 저장
        int max = -1; 

        //string -> int[] 변환
        for(int i=0; i<length; i++) {
            intArr[i] = number.charAt(i)-'0';
        }//for end

	//앞에서부터 해당 구간에 가장 큰 수 골라내는 과정(length-k번 cycle)
        for(int n=1; n<=length-k; n++) {
        //앞서 index위치 값이 사용됐으니 그 다음인 index+1부터 탐색
        //n번째 수 정하는 loop -> (length-k)-n개의 수 안 정해짐, 최소 이 개수만큼은 뒤에서 보장
        //-> length-(length-k-n) index 이전까지만 탐색! ->(k+n) index 이전까지 탐색
            for(int i=index+1; i<k+n; i++) {
                if(max<intArr[i]) {
                    max = intArr[i];
                    index = i;
                }//if end
                if(max==9) break; //최대값이므로 더 이상 진행x
            }//for end
            sb.append(max);
            max = -1;
        }//for end

        return sb.toString();
    }
}

**

char형 <-> int형 변형

 

다른 풀이) stack을 활용한 방법

댓글