[BaekJoon 2231][๐ค2] ๋ถํดํฉ
โ ๋ฌธ์
๐ฏ ๋์ด๋
Bronze ๐ค2
๐ง ํ์ด
1. ๋ด ํ์ด (๋ธ๋ฃจํธ ํฌ์ค)
- ์๊ณ ๋ฆฌ์ฆ
Brute Force
- ์ค๋ช
๋ฃจํ๋ฅผ ๋๋ฉฐ ํ์ฌ ์ซ์ ์์ฒด์ ๊ทธ ์ซ์์ ๊ฐ ์๋ฆฟ์์ ์ซ์๋ฅผ ๋ํ๋ ๋ฐฉ์์ผ๋ก ํ์๋ค.
์์ชฝ ๋ฐ๋ณต๋ฌธ์์ ํ์ฌ ๊ตฌํ ์์ผ๋ก๋ O(1)์ด์ง๋ง pow๋ผ๋ ๋น์ผ ์ฐ์ฐ๋ ์๊ณ ์์ ์๊ฐ์ผ๋ก ์ณ๋ ๊ฝค๋ ๋น์ผ ์ฐ์ฐ์ด๋ผ ๋ณ๋ก ์ข์ง๋ ์๋ค๊ณ ๋ณผ ์ ์๋ค.
N ๋ฒ์ ๋ด์ ๋ชจ๋ ๋ฃจํ๋ฅผ ๋๋ฉฐ ์๋ฆฟ์ ์ฒดํฌ์ ๋ง์
/๋บ์
์ฐ์ฐ์ ํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ O(N)์ด๋ผ๊ณ ํ ์ ์๋ค.
- ์ฝ๋
๋ด ํ์ด ์ฝ๋
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int iN{};
int iResult{};
cin >> iN;
for(int i = 1; i < iN; ++i)
{
int iSum{ i };
int iTemp{ i };
for(int j = 6; j >= 0; --j) // ๊ฐ ์๋ฆฟ์์ ์ซ์๋ฅผ ๋ํจ
{
int iDivide{ iTemp / static_cast<int>(pow(10, j))};
if(iDivide == 0)
{
continue;
}
iTemp -= iDivide * static_cast<int>(pow(10, j));
iSum += iDivide;
}
if(iSum == iN)
{
iResult = i;
break;
}
}
cout << iResult;
return 0;
}
2. ์ถ๊ฐ ํ์ด (์ต์ ํ๋ ๋ธ๋ฃจํธ ํฌ์ค)
- ์๊ณ ๋ฆฌ์ฆ
Brute Force
- ์ค๋ช
๋ด ์๊ฐ์ ๊ฐ์ฅ ์ ์ ํ์ด์ธ๋ฐ ์๊ฐ๋ณด๋ค ๊ด์ฐฎ์ ํธ๋ฆญ์ด ๋ช ๊ฐ ์์ด์ ์ข์ ํ์ด๋ผ๊ณ ์๊ฐํ๋ค.
int์๋ฃํ์string์ผ๋ก ๋ณํํ๊ณ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ํตํด ์๋ฆฟ์๋ฅผ ๊ตฌํ๋ค.- ๊ฐ ์๋ฆฟ์๊ฐ 9์ผ ๋ ์๋ฆฟ์์ ํฉ์ด ์ต๋์ด๋ฏ๋ก
iN - 9 * iDigit์ด ์ต์๊ฐ์ด ๋๋ค. - ํ์ฌ ์ซ์์
mod์ฐ์ฐ, ๋๋์ ์ฐ์ฐ์ ํตํด ์ ์ ๋ฐ๋ณต์ผ๋ก ๊ฐ ์๋ฆฟ์ ๋ํ๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ์๋นํ ์ต์ ํ๋ฅผ ํ ์ ์๋ค.
์๊ฐ ๋ณต์ก๋๋ฅผ O((log N)ยฒ) ๊น์ง ์ค์์ผ๋ฉฐ, ์ด๋ ๊ฑฐ์ ์์ ์๊ฐ์ผ๋ก ๋ด๋ ๋ ์ ๋๋ก ๋น ๋ฅด๋ค.
- ์ฝ๋
์ถ๊ฐ ํ์ด ์ฝ๋
#include <iostream>
#include <string>
using namespace std;
int DigitSum(int iInput);
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int iN{};
int iResult{};
cin >> iN;
int iDigit{ static_cast<int>(to_string(iN).length()) }; // string์ผ๋ก ๋ณํํ ๋ค ๋ฌธ์์ด ๊ธธ์ด๋ก ์๋ฆฟ์ ๊ตฌํจ
int iMin{ max(1, iN - 9 * iDigit) }; // ์ต์๊ฐ ๊ตฌํ๊ธฐ
for(int i = iMin; i < iN; ++i)
{
int iSum{ i + DigitSum(i) };
if(iSum == iN)
{
iResult = i;
break;
}
}
cout << iResult;
return 0;
}
int DigitSum(int iInput)
{
int iSum{};
while(iInput) // ๊ฐ ์๋ฆฟ์ ๋ํ๊ธฐ
{
iSum += iInput % 10;
iInput /= 10;
}
return iSum;
}
๐ญ ํ๊ธฐ
์ด๋ ํ ์ ์์ ์ ์ฒด ์๋ฆฟ์์ ํฌ๊ธฐ๋ฅผ ์์๋ด๋ ํธ๋ฆญ๊ณผ ๊ฐ ์๋ฆฟ์๋ฅผ ์ต์ํ์ ๋ฐ๋ณต๋ง์ผ๋ก ์์๋ด๋ ๋ฐฉ์์ด ํฅ๋ฏธ๋ก์ ๋ค. ์์๋๋ฉด ์์ผ๋ก ๊ณ์ํด์ ์ธ ๊ฒ ๊ฐ์ผ๋ ์ ๋๋ก ์์งํด๋์.
Comments