-
[알고리즘] Plus One알고리즘/배열 2021. 4. 19. 14:26
Problem
Key Point
- 인덱스가 0보다 크거나 carry가 있을 때까지 루프를 돌린다.
- (number + 1) % 10이 0인 경우 carry가 있는 것으로 판단한다.
- 전체 요소들을 다 돌고 나서 carray가 있는 경우 배열의 크기+1의 새로운 배열을 만들고 리턴한다.
Code
public class PlusOne { public int[] solution(int[] digits) { int carry = 1; int index = digits.length - 1; while (index >= 0 && carry > 0) { digits[index] = (digits[index] + 1) % 10; if (digits[index] == 0) { carry = 1; } else { carry = 0; } --index; } if (carry == 1) { digits = new int[digits.length+1]; digits[0] = 1; } return digits; } public static void main(String[] args) { //int[] digits = {9,9,9}; int[] digits = {9,8,9}; PlusOne plusOne = new PlusOne(); int[] solution = plusOne.solution(digits); for (int i = 0; i < solution.length; i++) { System.out.println(solution[i]); } } }
public int[] solution2(int[] digits) { for (int i = digits.length - 1; i >= 0; i--) { int d = (digits[i]+1) % 10; digits[i] = d; if (d != 0) { break; } } return digits; }
'알고리즘 > 배열' 카테고리의 다른 글
[알고리즘] Merge Intervals (O) (0) 2021.04.20 [알고리즘] Meeting Rooms II (0) 2021.04.20 [알고리즘] Jewels And Stones (1) 2021.04.20 [알고리즘] License Key Formatting (0) 2021.04.19 [알고리즘] K Closest Points to Origin (0) 2021.04.19