๋ฌธ์
ํ์ด
๋๋ ์ ๊ท์น์ฑ์ ํ์ ํ๋ฉด ํ ์ ์๋ ๋ฌธ์ ๋ค.
๋ํ ๋๋ ์ ์ต์๊ฐ์ธ ๊ฒ์ ์ธ์งํ๋ฉด ๋๋ค.
ํ๊ฐ์ธ ๊ฒฝ์ฐ 4, ๋๊ฐ์ธ ๊ฒฝ์ฐ 6, ์ธ๊ฐ์ธ ๊ฒฝ์ฐ 8, ๋ค๊ฐ์ธ ๊ฒฝ์ฐ 8, ๋ค์ฏ๊ฐ์ธ ๊ฒฝ์ฐ 10 ์ด๋ ๊ฒ ์ญ ์จ๋ด๋ ค ๊ฐ๋ฉด
4 6 8 8 10 10 12 12 12 14 14 14 16 16 16 16 ~~~ ์ด๋ผ๋ ๊ท์น์ฑ์ ๋ฐ๊ฒฌํ ์ ์๋ค.
์ด๋ฅผ ๊ฐ์๋ก ์นํํ์ฌ 1 1 2 2 3 3 4 4 5 5 6 6 ~ ์ผ๋ก ํน์ ํ ๋๋ ์ ๊ฐ์์ ๊ท์น์ฑ์ผ๋ก ์นํํ ์ ์๋ค.
cnt ๊ฐ 1์ฉ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ 2๊ฐ์ฉ ์ค๋ณต๋ ์ซ์๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๋ก ์๊ฐํด์ ๋์ ํฉ์ ๊ตฌํ๋ฉด ์ด๋ ๊ฒฝ์ฐ์ ํด๋นํ๋ ์๊ฐ ๋ช๊ฐ์ ์ง์ฌ๊ฐํ์ ์ต์ ๋๋ ์ธ์ง ์ ์ ์๋ค.
์ด ๊ท์นํค ๋ํ ๊ฐ์๋ฅผ ๋์ ํฉ์ผ๋ก ์นํํ์ฌ ์ด๋ถํ์์ผ๋ก ํด๊ฒฐํ๋ค.
๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋ ๋จ์ ์์์ผ๋ก ํ ์ ์๋๊ฑฐ ๊ฐ๋ค.
#include <iostream>
using namespace std;
long long T, arr[1000001];
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int chk = 0, cnt = 1;
for(int i=1; i<=63245; i++) {
arr[i] = cnt + arr[i-1];
chk += 1;
if(chk == 2) {
chk = 0; cnt += 1;
}
}
cin>>T;
while(T--) {
int N; cin>>N;
int lo = 0, hi = 63245;
while(lo+1 < hi) {
int mid = (lo+hi)/2;
if(arr[mid] >= N) hi = mid;
else lo = mid;
}
cout<<4+lo*2<<"\n";
}
}
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 25690 (0) | 2024.07.31 |
---|---|
๋ฐฑ์ค 22953 (0) | 2024.07.30 |
๋ฐฑ์ค 16965 (0) | 2024.07.30 |
๋ฐฑ์ค 21870 (0) | 2024.07.30 |
[์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ ] Preprocessing (1) | 2024.07.24 |