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

[๋ฐฑ์ค€,c++] 1449๋ฒˆ - ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน

by ์•ˆ์ฃผํ˜• 2022. 3. 27.

๋ฌธ์ œ

 

1449๋ฒˆ: ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน

์ฒซ์งธ ์ค„์— ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ…Œ์ดํ”„์˜ ๊ธธ์ด L์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ L์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N,L; cin>>N>>L;
    vector<int>v;
    for(int i=0; i<N; i++){
        int inp; cin>>inp;
        v.push_back(inp);
    }
    sort(v.begin(),v.end());
    double start = 0, end = 0, now = 0;
    int cnt = 0;
    for(int i=0; i<N; i++){
        start = v[i]-0.5;
        end = v[i]+0.5;
        if(now<end){
            if(now<start) now = start;
            int temp_cnt = (end - now) / L;
            if(temp_cnt==0) temp_cnt = 1;
            cnt += temp_cnt;
            now = start+ (L * temp_cnt);
        }
        
    }
    cout<<cnt;
    
}

 

ํ’€์ด

๋ฌธ์ œ์—์„œ "์Šน์ด๋Š” ํ•ญ์ƒ ๋ฌผ์„ ๋ง‰์„ ๋•Œ, ์ ์–ด๋„ ๊ทธ ์œ„์น˜์˜ ์ขŒ์šฐ 0.5๋งŒํผ ๊ฐ„๊ฒฉ์„ ์ค˜์•ผ ๋ฌผ์ด ๋‹ค์‹œ๋Š” ์•ˆ ์ƒŒ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค."๋ผ๋Š” ์กฐ๊ฑด์— ์˜ํ•ด์„œ start = v[i] - 0.5, end = v[i] + 0.5๋กœ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  now๋Š” ํ˜„์žฌ ํ…Œ์ดํ”„์˜ ์œ„์น˜๋ฅผ ๋œปํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ํ˜„์žฌ ํ…Œ์ดํ”„ ์œ„์น˜๋ณด๋‹ค end์ง€์ ์ด ๋” ํฌ๋‹ค๋ฉด ๊ทธ๋งŒํผ ํ…Œ์ดํ”„๋ฅผ ๋” ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๋งŒํผ ํ…Œ์ดํ”„๋ฅผ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•˜๊ณ , ํ˜„์žฌ ์ง€์ ์€ start +  ํ…Œ์ดํ”„์˜ ๊ธธ์ด * ํ…Œ์ดํ”„ ๊ฐœ์ˆ˜์˜ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ํ•ด์ค๋‹ˆ๋‹ค. if(now<start) now = start;๋ผ๋Š” ์กฐ๊ฑด์„ ์ค€ ์ด์œ ๋Š”, ์Šคํƒ€ํŠธ ์ง€์ ๋ถ€ํ„ฐ ํ…Œ์ดํ”„๋ฅผ ์น ํ•˜๋ฉด ๋˜๊ธฐ์— ๋ถˆํ•„์š”ํ•œ ํ…Œ์ดํ”„์น ์„ ํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€