[LeetCode] 66. Plus One

김개발·2021년 11월 26일
0

LeetCode

목록 보기
8/10

문제 푼 날짜 : 2021-11-27

문제

문제 링크 : https://leetcode.com/problems/plus-one/

접근 및 풀이

아래의 생각대로 코드를 구현하였다.

  1. vector 맨 뒤에서부터 각각의 값에 carry(default : 1)를 더해준다.
  2. 더해진 값에 따라 carry를 정해주고, 임시 vector(코드 내의 ret)에 넣어준다.
    2-1. 더해진 값이 10이면 carry를 1로 해주고 0을 넣어준다.
    2-2. 아니면 carry를 0으로 해주고 더해진 값을 넣어준다.
    2-3. 마지막에 carry가 1이라면 1을 넣어주고 마무리해준다.
  3. reverse 함수를 이용하여 1이 더해진 vector를 뒤집어서 return 해준다.

코드

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int carry = 1;
        int size = digits.size();
        vector<int> ret;
        
        for (int i = size - 1; i >= 0; i--) {
            int sum = digits[i] + carry;
            
            if (sum == 10) {
                ret.push_back(0);
                carry = 1;
            } else {
                ret.push_back(sum);
                carry = 0;
            }
        }
        if (carry == 1) {
            ret.push_back(1);
        }
        reverse(ret.begin(), ret.end());
        return ret;
    }
};

결과

피드백

leetcode 문제를 풀면서 라이브러리 함수를 썼을 경우 시간초과가 나는 경우가 많아서 웬만하면 안쓰려고 노력하고 있다.
하지만, 사용해도 되는 경우가 종종 있다. 이를 판단하기 위해서는 해당 함수의 시간복잡도에 대해서도 자세히 알고 있어야 할 것 같다.

profile
개발을 잘하고 싶은 사람

0개의 댓글