본문 바로가기
Coding Test/LeetCode

[Javascript] (LeetCode) 66. Plus One (Easy)

by Chaedie 2022. 8. 4.
728x90

[Javascript] (LeetCode) 66. Plus One (Easy)

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
  for (let i = 0; i < digits.length; i++) {
    let idx = digits.length - 1 - i;

    if (digits[idx] !== 9) {
      digits[idx] += 1;

      return digits;
    }

    if (digits[idx] === 9) {
      digits[idx] = 0;
      if (idx === 0) {
        digits.unshift(1);
        return digits;
      } 

      continue;
    }
  }
};
  • 1의 자리부터 높은 자리까지 차례대로 확인하면 된다.
  • 9가 아닐 경우는 +1 하고 끝내면 된다.
  • 9일 경우는 0으로 만들고 좌측으로 와서 9인지 확인해서 +1 또는 0으로 만들기를 하면된다.
  • 이걸 마지막 자리수까지 한뒤에 마지막 자리일 경우는 unshift() 메서드를 활용해서 1을 넣어주면 끝!

다른 사람 풀이 참고한 풀이

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {

  for (let i = digits.length - 1; i >= 0; i--) {
    digits[i]++;

    if (digits[i] > 9) {
      digits[i] = 0;
    } else {
      return digits;
    }
  }

  digits.unshift(1);
  return digits;

};
  • 다른 사람 풀이를 보니 i 자체를 마지막 인덱스로 해서 i— 하는 형태로 했더라. 그래서 한 번 해봄. 이러면 for문 읽기 까다로워져서 잘 안쓰지만 연습삼아 걍 해봤음
  • 1) 와우 그냥 일단 1 더해주고
  • 2) 이후에 10인지 체크해서 0 만들어주고 다음루프로 ㄱㄱ
  • 3) 다 끝난 다음에 return 안되었으면 (0번째가 9였으면) unshift(1) 해주기
  • 와우!!!

배운 점, 느낀 점

  • 다른 사람 코드 보는게 진짜 공부된당 굳굳

댓글