๋ฌธ์
https://leetcode.com/problems/add-digits/
์ฝ๋
(1) ์ฌ๊ท, ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ํ์ด
class Solution {
public:
int addDigits(int num) {
int temp1=0, temp2=0, ans=num;
while(true){
while(num>9){
temp1 = num%10;
temp2 = num/10;
ans = temp1 + temp2;
num = ans;
}
if(num<10){
num = ans;
return num;
}
}
}
};
(2) ์กฐ๊ฑด์์ ํ์ฉํ์ฌ O(1) ์๊ฐ ๋ณต์ก๋๋ก ํด๊ฒฐํ ํ์ด
class Solution {
public:
int addDigits(int num) {
if(num==0)
return 0;
else if(num%9==0)
return 9;
else
return num%9;
}
};
ํ์ด
์ด ๋ฌธ์ ๋ 2^31- 1๊น์ง ๋ค์ด์ค๋ ์์ฐ์์ ๊ฐ ์๋ฆฟ์๋ฅผ ํ ์๋ฆฟ์๊ฐ ๋ ๋๊น์ง ๋ํด์ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ ๋๋ค.
์ฒ์์๋ ๋ฐ๋ณต๋ฌธ์ ํ์ฉํด์ ๊ฐ ์๋ฆฟ์๋ฅผ ๋ผ์ด๊ฐ๋ฉฐ ํ์์ง๋ง ๋ฌธ์ ์์ Follow up: Could you do it without any loop/recursion in O(1) runtime? ๋ผ๋ ์กฐ๊ฑด์ ์ค ๊ฒ์ ๋ณด๋ฉด ๋ฐ๋ณต๋ฌธ์ด๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ง ์๊ณ O(1)์ ์๊ฐ์ผ๋ก ํด๊ฒฐํ๋ผ๋ ๋ฌธ์ ์ด๊ธฐ์ ์ข ๋ ๊ณ ๋ฏผ์ด ํ์ํ๋ ๋ฌธ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก O(1)๋ก ํด๊ฒฐํ ๋ ๋ฒ์งธ ํ์ด๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง 9๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ์ ๋์ ๊ฐ์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ด ๋จ์ ์ ์ ์๋๋ฐ ๊ทธ ์ด์ ๋ ์ซ์ 9๋ผ๋ ๊ฐ์ ์์ธํ ์ดํด๋ณด๋ฉด ์๋์ ํน์ง์ ์ง๋๊ณ ์์ต๋๋ค.
4๋ฒ์งธ ํน์ง์ ์ ์ดํด๋ณด๋ฉด 9์ ์ด๋ค ์๋ฅผ ๊ณฑํ๋๋ผ๋, ๋์ค๋ ๊ฐ์ ๊ฐ ์๋ฆฌ ์ซ์๋ฅผ ๋ชจ๋ ํฉํ๋ฉด 9์ ๋ฐฐ์ ๊ฐ์ด ๋ฉ๋๋ค.
else if(num%9==0) return 9;
๋ฐ๋ผ์ ์ ์ฝ๋ ์กฐ๊ฑด ๋ถ๋ถ์ 9๋ก mod์ฐ์ฐ์ ๊ณ์ํด์ฃผ์์ ๋ 0์ด ๋์จ๋ค๋ฉด 9์ ๋ฐฐ์๊ฐ ๋๊ธฐ์ ๊ฒฐ๋ก ์ ์ผ๋ก 9๊ฐ ๋ฉ๋๋ค.
๋ ์์ธํ ์์๋ด ์๋ค. ์๋์ ํ๋ 1~100๊น์ง์ digits ์ ๊ฒฐ๊ณผ์ ๋๋ค.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
---------
10 1
11 2
12 3
13 4
14 5
15 6
16 7
17 8
18 9
--------
19 1
20 2
21 3
22 4
23 5
24 6
25 7
26 8
27 9
-------
28 1
29 2
30 3
31 4
32 5
33 6
34 7
35 8
36 9
-------
37 1
38 2
39 3
40 4
41 5
42 6
43 7
44 8
45 9
------
46 1
47 2
48 3
49 4
50 5
51 6
52 7
53 8
54 9
--------
55 1
56 2
57 3
58 4
59 5
60 6
61 7
62 8
63 9
--------
64 1
65 2
66 3
67 4
68 5
69 6
70 7
71 8
72 9
--------
73 1
74 2
75 3
76 4
77 5
78 6
79 7
80 8
81 9
--------
82 1
83 2
84 3
85 4
86 5
87 6
88 7
89 8
90 9
-------
91 1
92 2
93 3
94 4
95 5
96 6
97 7
98 8
99 9
------
100 1
9๊ฐ์ ์๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ด 1~9๊ฐ ๋์ด์ ์ ์ ์์ต๋๋ค. mod 9 ์ฐ์ฐ์ ํํ๋ ๊ฒ์ ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > Leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Leetcode,c++] Happy Number (0) | 2022.03.02 |
---|---|
[Leetcode,c++] Majority Element (0) | 2021.11.28 |
[Leetcode,c++] Network Delay Time (0) | 2021.11.22 |
[Leetcode,c++] Valid Anagram (0) | 2021.11.20 |
[Leetcode,c++] Single Number (0) | 2021.11.19 |
[Leetcode,c++] Combination Sum II (0) | 2021.11.16 |
๋๊ธ