본문 바로가기
Research/Coding Test

leetcode_66. plus-one

by RIEM 2023. 3. 24.
728x90

Problem

plus-one
https://leetcode.com/problems/plus-one/description/

Intuition

받아오는 배열을 join하여 10진수로 바꾼 뒤, 이에 1을 더하고 다시 배열로 바꾸는 방식으로 접근했다. 하지만 수치가 커지면서 연산이 정상적으로 작동되지 않았다. BigInt의 문제일까 생각했지만, 이 문제의 핵심은 그런 방향이 아닐 것이라 생각했다.

Approach

결국 9에서 10으로 넘어갈 때 앞자리에 1씩 올려주는 것이 핵심이다. 이는 좌에서 우가 아니라 우에서 좌로 increment되는 것이기 때문에 역방향으로 감산하는 방식의 for문을 사용했다.

처음 left(나머지의 콩글리쉬)에 1을 초기값으로 넣어준 다음, 반복문이 돌 때 현재 값 + left가 10인지 아닌지 판단한 다음 10이면 left를 그대로 두고 다음 연산에 더했다. 만약 10이 아니면 그냥 x + 1을 리턴하면 된다.

Complexity

  • Time complexity:
  • Space complexity:

Code

var plusOne = function(digits) {

  const result = [];
  let left = 1;

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

    console.log(result)

    if (digits[i] + left === 10) {
      result.push(0)
    } else {
      result.push(digits[i] + left);
      left = 0;
    }
  }

  if(left) result.push(1)

  return result.reverse();
};
728x90

'Research > Coding Test' 카테고리의 다른 글

HackerRank_Plus Minus  (0) 2023.04.02
HackerRank_Diagonal Difference  (0) 2023.03.30
747. Largest Number At Least Twice of Others  (0) 2023.03.23
스택/큐_기능개발  (0) 2023.03.21
스택/큐_같은 숫자는 싫어  (0) 2023.03.21

댓글