숫자 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을 해보니 통과가 되었다!