๋ฌธ์
์ด๋ค ์์ฐ์ N์ด ์์ ๋, ๊ทธ ์์ฐ์ N์ ๋ถํดํฉ์ N๊ณผ N์ ์ด๋ฃจ๋ ๊ฐ ์๋ฆฌ์์ ํฉ์ ์๋ฏธํ๋ค. ์ด๋ค ์์ฐ์ M์ ๋ถํดํฉ์ด N์ธ ๊ฒฝ์ฐ, M์ N์ ์์ฑ์๋ผ ํ๋ค. ์๋ฅผ ๋ค์ด, 245์ ๋ถํดํฉ์ 256(=245+2+4+5)์ด ๋๋ค. ๋ฐ๋ผ์ 245๋ 256์ ์์ฑ์๊ฐ ๋๋ค. ๋ฌผ๋ก , ์ด๋ค ์์ฐ์์ ๊ฒฝ์ฐ์๋ ์์ฑ์๊ฐ ์์ ์๋ ์๋ค. ๋ฐ๋๋ก, ์์ฑ์๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ์์ฐ์๋ ์์ ์ ์๋ค.
์์ฐ์ N์ด ์ฃผ์ด์ก์ ๋, N์ ๊ฐ์ฅ ์์ ์์ฑ์๋ฅผ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N(1 โค N โค 1,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค. ์์ฑ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ค.
ํ์ด
1๋ถํฐ i๋ฅผ ํ๋์ฉ ์ฆ๊ฐ์์ผ๊ฐ๋ฉฐ ์์ฑ์๋ฅผ ์ฐพ๋๋ค. ๋ง์ฝ ์์ฑ์๋ฅผ ์ฐพ๋๋ค๋ฉด ๋ฐ๋ก breakํ์ฌ ์ต์๊ฐ ๋ ์ ์๋๋ก ํ๋ค.
์ด ๋, 1๋ถํฐ์ ๋ถํดํฉ์ ๋ชจ๋ ๊ตฌํ๋ฉด ๋นํจ์จ์ ์ด๋ฏ๋ก ์กฐ๊ธ์ด๋๋ง ์ฐ์ฐํ์๋ฅผ ์ค์ผ ์ ์๋๋ก ์์์ ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค. N์ด 3์๋ฆฌ ์ซ์์ผ๊ฒฝ์ฐ, ์ต์๊ฐ์ธ 100์ ๋ง์กฑํ๋ ์ซ์๋ 86์ด๋ค.
๋ฐ๋ผ์ ์์์ ์ N์ด i์๋ฆฌ ์์ผ๋, 10^(i-1) - 9 * (i-1)๋ก ์์ํ๋๋ก ํ์๋ค.
N์ ๊ฐ์ด ์ปค์ง์๋ก ๋ถํ์ํ ์ฐ์ฐ์ ์๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
(์ถ์ฒ) https://cryptosalamander.tistory.com/41
์์ฑ์๋ฅผ ์ฐพ๋ ๋ฒ์น์ด ์๊ธด ํ์ง๋ง ์ฝ๊ฒ ์๊ฐํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก i=1๋ถํฐ ํด๋ ๋ฌด๋ฐฉํ๋ค.

#include <iostream>
#include <cmath>
using namespace std;
int main(){
int N, sum, num;
cin >> N;
/*int tmp=N, digit=0;
while(tmp>0){
tmp /= 10;
digit++;
}
int i = pow(10, digit-1)-9*digit;
*/
int i=1;
while(1){
sum = i;
num = i;
while(num>0){
sum += num%10;
num /= 10;
}
if (sum == N){
cout << i;
break;
}
if (i==N){
cout << "0";
break;
}
i++;
}
}
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1018๋ฒ : ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2021.08.29 |
---|---|
[๋ฐฑ์ค/C++] 7568๋ฒ : ๋ฉ์น (0) | 2021.08.29 |
[๋ฐฑ์ค/C++] 2798๋ฒ : ๋ธ๋์ญ (0) | 2021.08.27 |
[ํ๋ก๊ทธ๋๋จธ์ค/C++] ๋คํธ์ํฌ (0) | 2021.08.24 |
[๋ฐฑ์ค/C++] 2606๋ฒ : ๋ฐ์ด๋ฌ์ค(BFS) (0) | 2021.08.24 |
๋๊ธ