๐ฆโ๐ฅ์ด๋ณด์ ์นํ ๊ฐ์ด๋ 'Plus One' โ LeetCode 66 (C++ | Python | JavaScript)
Source: Dev.to
Problem Description
์ฃผ์ด์ง ๋ฐฐ์ด digits๋ ๊ฐ ์์๊ฐ ํ ์๋ฆฌ ์ซ์์ธ ๋น์์ ์ ์๋ฅผ ๋ํ๋ด๋ฉฐ, ๊ฐ์ฅ ์ค์ํ ์๋ฆฌ(์ต์์ ์๋ฆฌ)๋ ๋ฐฐ์ด์ ์์ ์์นํฉ๋๋ค.
๋ฐฐ์ด์๋ ์ ํ 0์ด ์์ต๋๋ค(๋จ, ์ซ์ ์์ฒด๊ฐ 0์ธ ๊ฒฝ์ฐ๋ ์์ธ).
๋น์ ์ ์์ ์ ์ด ์ ์์ 1์ ๋ํ ๋ค, ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด ํํ์ ์ซ์๋ค๋ก ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
Edge cases
- ์ซ์๊ฐ
9๋ณด๋ค ์์ผ๋ฉด, ํด๋น ์๋ฆฌ์๋ฅผ 1๋งํผ ์ฆ๊ฐ์ํค๋ฉด ๋์ ๋๋ค. - ์ซ์๊ฐ
9์ด๋ฉด,0์ด ๋๊ณ1์ ์ผ์ชฝ(์์ชฝ) ์๋ฆฌ๋ก ์ฌ๋ ค์ผ ํฉ๋๋ค. - ๋ชจ๋ ์๋ฆฌ์๊ฐ
9์ธ ๊ฒฝ์ฐ(์:[9,9,9]) ๊ฒฐ๊ณผ๋ ์์1์ด ๋ถ๊ณ ๋๋จธ์ง๋0์ธ ์๋ก์ด ๋ฐฐ์ด์ด์ด์ผ ํฉ๋๋ค(์:[1,0,0,0]).
C++ Solution
class Solution {
public:
vector plusOne(vector& digits) {
for (int i = digits.size() - 1; i >= 0; --i) {
if (digits[i] List[int]:
for i in range(len(digits) - 1, -1, -1):
if digits[i] = 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
// All digits were 9
digits.unshift(1);
return digits;
};
Key Points
- ์ญ์ ํ์: ๋ฐฐ์ด์ ๋์์๋ถํฐ ์์ํด ์ฌ๋ฆผ(carry)์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
- ์กฐ๊ธฐ ๋ฐํ:
9๋ณด๋ค ์์ ์ซ์๋ฅผ ์ฐพ์ผ๋ฉด ํด๋น ์๋ฆฌ์๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ ๋ฐ๋ก ๋ฐํํฉ๋๋คโ์ถ๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ ์์ต๋๋ค. - ๋ฐฐ์ด ์กฐ์: ๋ชจ๋ ์๋ฆฌ์๊ฐ
9์ธ ๊ฒฝ์ฐ ์์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค(C++์insert, JavaScript์unshift`, Python์ ๋ฆฌ์คํธ ์ฐ๊ฒฐ ๋ฑ).
์ด ๋ฌธ์ ๋ ๋จ์ํ ๋ก์ง์ผ๋ก โํฐ ์ ์โ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ง์ ์ธ์ด์์ ํ์ค ์ ์ ํ์ ์ด ์ค๋ฒํ๋ก์ฐ๋ ์ ์๋ ํฐ ์๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ฌ๋ฆผ์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.