[LeetCode] Maximum 69 Number

준규·2022년 8월 7일
1

숫자 6과 9로만 이루어진 integer num이 주어질 때 숫자를 하나만 바꾸어서 얻을 수 있는 최댓값을 구하는 문제이다

예시를 보면 6은 9로 9는 6으로만 바꿀 수 있고 바꿀 수 있는 숫자는 최대 한개이다

나올 수 있는 최댓값을 리턴하는 문제이므로 num의 앞자리부터 차례로 탐색을 해보며 숫자가 6일 경우 9로 바꿔준다.

이 때 변경가능한 숫자의 최대는 1개이므로 숫자가 변경되었을 때 반복문을 종료 시키면 수행 시간을 줄일 수 있을 것이라고 생각했다.

그리하여 코드를 짜보면

const maximum69Number  = function(num) {
    const string  = String(num)
    const arr = string.split('');
    
    for(let i = 0; i < arr.length; i++){
        if(arr[i] !== '9') {
            const index = arr.indexOf(arr[i]);
            arr.splice(index, 1, '9');
            break;
        }
    }
    const result = arr.join("");
    return result
};

파라미터로 받은 num을 배열로 변환 시켜준 뒤 앞 자리부터 탐색을 시작해 나간다

자릿수가 큰 앞쪽 숫자가 변할 때가 최댓값이 될 것이므로 앞자리가 6에서 9로 변환 된다면 반복문을 종료하고 배열을 다시 변환하여 리턴해주었다.

submit을 해보니 통과가 되었다!

profile
안녕하세요 :)

0개의 댓글