나만보는개발공부블로그

[Array] Plus One 본문

Algorithms/leetcode

[Array] Plus One

alexrider94 2021. 2. 9. 00:19

설명

빈칸이 없는 10 이하의 정수의 배열이 있다고 하면 마지막에 하나를 더하고 난후의 결과를 반환하라.

 

var plusOne = function (digits) {
    let check = true;
    for (let i = digits.length - 1; i >= 0; --i) {
        let digit = digits[i];
        if (digits.length - 1 != i && !check) break;

        if (digit == 9) {
            digits[i] = 0;
            check = true;
        }
        else {
            digits[i]++;
            check = false;
        }
    }

    if (check) digits.unshift(1);

    return digits
};

 

여러 조건문을 주고 문제를 처리할려다보니 코드가 난잡해져서 discussion의 답안을 보고 참고하며 만들었다.

대부분의 답들은 unshift함수를 사용하였는데 array의 내장객체로 맨앞쪽에 원소를 추가해주는 함수였다. 여러므로 쓸모가 많은 함수인것같다.

반복문으로 배열의 뒷쪽부터 앞쪽까지 돌면서 digit이 9인경우 0 으로 만들어주고 check을 true로 해서 그 앞의 문자도 체크해가면서 9가 아닌경우 false가 나와 반복을 탈출하면서 반환한다 만약 check 변수가 계속 true이면 끝까지 도는 경우라서 마지막에 if(check) 으로 unshift함수로 맨앞에 1을 추가해주면 조건에 충족한다.

 

 

'Algorithms > leetcode' 카테고리의 다른 글

merge-two-sorted-lists  (0) 2021.02.11
Climbing Stair  (0) 2021.02.10
Longest Common Prefix  (0) 2021.02.09
(String) Length of Last Word  (0) 2021.02.08
Two sum  (0) 2021.02.06