๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 17266๋ฒˆ - ์–ด๋‘์šด ๊ตด๋‹ค๋ฆฌ

by ์•ˆ์ฃผํ˜• 2022. 8. 18.

๋ฌธ์ œ

 

17266๋ฒˆ: ์–ด๋‘์šด ๊ตด๋‹ค๋ฆฌ

์ธํ•˜๋Œ€ํ•™๊ต ํ›„๋ฌธ ๋’ค์ชฝ์—๋Š” ์–ด๋‘์šด ๊ตด๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๊ฒ์Ÿ์ด ์ƒ๋นˆ์ด๋Š” ๊ธธ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์–ด๋‘ก๋‹ค๋ฉด ๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๊ตด๋‹ค๋ฆฌ๋กœ ๊ฐ€๋ฉด ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋กœ ์ง‘๊นŒ์ง€ ๊ฐˆ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ตด๋‹ค๋ฆฌ๋Š” ์–ด๋‘ก๊ธฐ ๋•Œ๋ฌธ์— ๋น™

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int N, M;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N>>M;
    vector<int> v(M);
    
    double height = 0;
    for(int i=0; i<M; i++) cin>>v[i];
    
    if(M==1) height = N;
    height = fmax(v.front(), (ceil(N-v.back())));
    for(int i=0; i<M-1; i++){
        height = fmax(height, ceil((v[i+1]-v[i])/2.0));
    }
    
    cout<<(int)height;
}

 

ํ’€์ด

๋ฌธ์ œ ๋ถ„๋ฅ˜๋Š” binary search๋กœ ๋˜์–ด์žˆ์ง€๋งŒ ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ด ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋งจ ์ฒ˜์Œ ๊ฐ€๋กœ๋“ฑ์€ ๊ฐ€๋กœ๋“ฑ์˜ ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฐํ˜€์•ผ ํ•˜๊ณ , ์ ค ๋ ๊ฐ€๋กœ๋“ฑ์€ (๊ตด๋‹ค๋ฆฌ์˜ ๊ธธ์ด - ๋ ๊ฐ€๋กœ๋“ฑ์˜ ๊ธธ์ด) ๋งŒํผ ๋ฐํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ceil์€ ์˜ฌ๋ฆผ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  3. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๊ฐ€๋กœ๋“ฑ ์‚ฌ์ด๋Š” (๊ฐ€๋กœ๋“ฑ ์‚ฌ์ด ๊ธธ์ด/2) ๋งŒํผ๋งŒ ๋ฐํžˆ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  4. ๋”ฐ๋ผ์„œ 1๋ฒˆ๊ณผ 3๋ฒˆ์ค‘ ํฐ ๊ฐ€๋กœ๋“ฑ์˜ ๋†’์ด๋ฅผ ๊ฐฑ์‹ ํ•ด๊ฐ€๋ฉฐ ๊ตด๋‹ค๋ฆฌ์˜ ๊ธธ์ด N์„ ๋ชจ๋‘ ๋น„์ถ”๊ธฐ ์œ„ํ•œ ๊ฐ€๋กœ๋“ฑ์˜ ์ตœ์†Œ ๋†’์ด๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค

๋Œ“๊ธ€