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 |
댓글