*์ง์ ์ง ๊ฒ์์ผ๋ก ๋ชฉ์ ์ ๋ณด๋ค ๋ ์ต์ ์ธ ํจ์๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค.*
- ํน์ ๊ฐ n์ ์์ ๋กญ๊ฒ ์ ๋ ฅํ๋ฉด,
- n ์ดํ์ ์ ์ค์์ ๊ฐ์ฅ ํฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ๋ง์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
์์)
100์ ๋ ฅ์ 64 ์ถ๋ ฅ
2์ ๋ ฅ์ 2์ถ๋ ฅ
1์ ๋ ฅ์ 1์ถ๋ ฅ

#include <iostream>
using namespace std;
int func(int* n)
{
int max =1;
for (int i = 1; i * 2 <= *n; i *= 2)
{
max = i * 2;
}
return max;
}
int main()
{
int n = 0;
cin >> n;
while (n < 1)
{
cin >> n;
}
int* a = &n;
n = func(a);
cout << n << endl;
return 0;
}
๊ฐ์ฅ ์ ๊ฒฝ์ด ๋ถ๋ถ์ max์ ๋ค์ด๊ฐ i๊ฐ์ด ์ ์ด์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ์๋ค๋ก๋ง ์ด๋ฃจ์ด์ง ์ ์๋๋ก
for๋ฌธ์ ์ฆ๊ฐ์์ i *= 2๋ก ์ฒ๋ฆฌํ๊ณ
๋งค๋ฒ max์ ์๋ก์ด i *2๋ฅผ ๋ฃ์ด์ ๋ง์ง๋ง์๋ ๊ฐ์ฅ ํฐ ๊ฑฐ๋ญ์ ๊ณฑ ์๋ก ์ด๊ธฐํ๋ ์ ์๋๋ก ํ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ 1๋ํ 2์ 0 ์ ๊ณฑ์ด๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅ๊ฐ์ผ๋ก ๋์ฌ ์ ์๋๋ก int max ์ ์ธ ๋ฐ ์ด๊ธฐํ๋ฅผ 1;๋ก ํด์ฃผ๊ณ
main ํจ์์์ 1 ๋ฏธ๋ง ์๋ฅผ ์ ๋ ฅํ ์ ์๋๋ก ๋ง์๋ค.
int func(int* n)
{
int max =1;
while(max * 2 <= *n) max *= 2;
return max;
}
ํจ์ ๋ถ๋ถ์ ์์ ๊ฐ์ด ์จ๋ ๋ฌด๋ฐฉํ๋ค.
'์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [c++] ์ฝ์ ์ ๋ ฌ (0) | 2021.09.21 |
|---|---|
| [c++] ๋ฒ๋ธ์ ๋ ฌ (0) | 2021.09.21 |
| [c++] [์ ํ ์ ๋ ฌ] ํ์ฉํด์ ๋ฐฐ์ด ์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐ๊พธ๊ธฐ (0) | 2021.09.20 |
| c++ ๋ฐฐ์ด ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์ ๊ตฌํ (0) | 2021.09.20 |
| ๊น์ด ์ฐ์ ํ์(DFS, Depth First Search), ๋๋น ์ฐ์ ํ์(BFS, Breadth First Search)) (0) | 2021.05.16 |