티스토리 뷰

1. 문제

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

 

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

 

programmers.co.kr

 

2. 설명

number의 첫번째 인덱스로부터 인덱스 + k 까지 최댓값을 찾아서 answer에 삽입하는 방식으로 풀었다.

반복을 진행하는 것은 number 길이 - k 까지만 진행하면 된다.

j의 시작을 idx로 잡은 이유는 이미 선택한 최댓값을 지나치기 위해서!

탐욕법은 아직 어렵다.

 

3. 코드

class Solution {
    public String solution(String number, int k) {
        StringBuilder answer = new StringBuilder();
        int idx = 0;
        char max;
        for(int i = 0; i < number.length() - k; i++) {
            max = '0';

            for(int j = idx; j <= k + i; j++) {
                    if(max < number.charAt(j)) {
                        max = number.charAt(j);  // 최댓값 찾기
                        idx = j + 1;
                    }
            }
            answer.append(max);
        }
        return answer.toString();
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday