algorithm

๋ฐฑ์ค€ 30704

rkawk 2024. 7. 30. 23:08

๋ฌธ์ œ

ํ’€์ด

๋‘˜๋ ˆ์˜ ๊ทœ์น™์„ฑ์„ ํŒŒ์•…ํ•˜๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค.

๋„ํ˜• ๋‘˜๋ ˆ์˜ ์ตœ์†Ÿ๊ฐ’์ธ ๊ฒƒ์„ ์ธ์ง€ํ•˜๋ฉด ๋œ๋‹ค.

ํ•œ๊ฐœ์ธ ๊ฒฝ์šฐ 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