문제링크
문제정보
정수로 이루어진 배열 digits이 매개변수로 주어집니다.
digits[i]는 각각 정수의 자릿수를 의미하며 숫자는 왼쪽에서 오른쪽 순서로 정렬됩니다.
마지막 배열에 1을 더하고 결과를 정수로 이루어진 배열 형태로 반환합니다.
예시
Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].
그리 까다로워 보이지 않는데 9의 처리가 되게 애매한 문제였습니다.
9가 나오면 1,0으로 리턴해줘야하고
99가 나오면 1,0,0으로 리턴해줘야했거든요..
결국 9의 처리를 완벽하게 하지 못하고 다른 사람의 풀이를 참고했습니다.
var plusOne = function(digits) {
for(var i = digits.length - 1; i >= 0; i--){
if(++digits[i] > 9) digits[i] = 0;
else return digits;
}
digits.unshift(1);
return digits;
};
감소문으로 배열의 맨 뒷요소부터 접근해줍니다.
만약 ++digits[i]가 9보다 크다면 digits[i]는 9라는 뜻일겁니다. 그렇기때문에 digits[i]를 0으로 할당해주고
그 이외의 경우에는 digits를 return 해줍니다.
unshift는 배열의 맨 앞에 요소를 추가시켜주는 메서드입니다.
근데 정말 충격적인게 if(++digits[i] > 9)에서 해당되지않고 else로 넘어가서
return digits를 하면 [1,2,3]이 주어졌던 경우 [1,2,4]가 리턴됩니다.
그래서 정답이 나와요..
이게뭐지??
반응형
'leetcode' 카테고리의 다른 글
442. Find All Duplicates in an Array 자바스크립트 (1) | 2023.01.07 |
---|---|
409. Longest Palindrome 자바스크립트 (0) | 2022.12.19 |
13. Roman to Integer (0) | 2022.11.28 |
500. Keyboard Row (0) | 2022.11.27 |
231. Power of Two (0) | 2022.11.26 |