<Easy> Plus One (LeetCode : C#)

이도희·2023년 3월 19일
0

알고리즘 문제 풀이

목록 보기
34/185

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

📕 문제 설명

정수 배열에 인덱스와 자릿수를 매칭하여 큰 정수가 주어질때 하나 증가시킨 후 결과를 배열로 반환

  • Input
    큰 정수를 나타내는 정수 배열
  • Output
    큰 정수에서 1 증가 시킨 후 정수 배열

예제

풀이

핵심은 현재 자릿수의 숫자가 9인가 아닌가에 따라 끝낼지 말지를 결정하는 것이다.

  1. 먼저 일의 자리에 있는 숫자가 9인지 확인한다 -> 9가 아니면 +1하고 끝내고 9면 0으로 만들고 다음 숫자들을 확인한다.
  2. 다음 자릿수들에 대해서도 똑같이 반복한다. 9면 현재 자리를 0으로 변환하고, 그렇지 않다면 +1하고 똑같이 반환한다.
  3. 만약 계속 위로 올림이 일어났다면 현재 가장 큰 자릿수의 숫자가 0인지 확인한다. 0이었다면 올림을 해줘야하는 케이스이므로 리스트로 변환해 자릿수를 하나 늘리고 다시 array로 변환해 반환해준다.
public class Solution {
    public int[] PlusOne(int[] digits) {

        if (digits[digits.Length - 1] == 9)
        {
            digits[digits.Length-1] = 0;
        } 
        else
        {
            digits[digits.Length-1] += 1;
            return digits;
        }

        for (int i = digits.Length - 2; i >= 0; i--)
        {
            if (digits[i] == 9)
            {
                digits[i] = 0;
            }
            else
            {
                digits[i] += 1;
                return digits;
            }
        }

        if (digits[0] == 0)
        {
            List<int> answer = digits.ToList();
            answer.Insert(0, 1);
            return answer.ToArray();
        }
        

        return digits;
        
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글