๐Ÿ“ฆ Chango/๐Ÿ‰ ์˜ค์ผ๋Ÿฌ OJ

[๋ฏธํ•ด๊ฒฐ][์˜ค์ผ๋ŸฌOJ] #4085 ์˜ค์ผ๋Ÿฌ์™€ ์นœ์ฒ™๋“ค

์„ ๋‹ฌ 2021. 3. 10. 00:05
๋ฐ˜์‘ํ˜•

euleroj.io/problemset/problem/4085

 

๋ฌธ์ œ
์œ ๋ช…ํ•œ ๋งˆํ”ผ์•„ ๋‘๋ชฉ์ธ ์˜ค์ผ๋Ÿฌ๊ฐ€ ๋‰ด์š•์œผ๋กœ ์ด์‚ฌ๋ฅผ ๊ฐ„๋‹ค. ๋‰ด์š•์—๋Š” ๊ทธ์˜ ๊ฐ€์กฑ๋“ค์ด ๋งŽ์ด ์‚ด๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ๋“ค์€ ๋ชจ๋‘ ๋ผ๋งˆํ”ผ์•„ ๊ฑฐ๋ฆฌ(Lamafia Avenue)์— ์‚ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋Š” ๊ทธ ์นœ์ฒ™๋“ค์„ ์ž์ฃผ ๋งŒ๋‚˜๋Ÿฌ ๊ฐˆ ๊ณ„ํš์ด๊ธฐ ๋•Œ๋ฌธ์— ์นœ์ฒ™๋“ค๊ณผ ๊ฐ€๊นŒ์šด ๊ณณ์— ์ง‘์„ ๊ตฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
 ์˜ค์ผ๋Ÿฌ๋Š” ๋ชจ๋“  ์นœ์ฒ™ ์ง‘๊ณผ์˜ ๊ฑฐ๋ฆฌ ์ดํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ณณ์— ์ง‘์„ ๊ตฌํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š”๋ฐ, ํ•˜ํ•„์ด๋ฉด ๋‹น์‹ ์—๊ฒŒ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋‚ด๋ผ๋Š” ํ˜‘๋ฐ• ํŽธ์ง€๋ฅผ ๋ณด๋‚ด์™”๋‹ค.


์ž…๋ ฅํ˜•์‹
์ฒซ์งธ ์ค„์€ ์นœ์ฒ™ ์ง‘์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N(1≤N≤20,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ์นœ์ฒ™ ์ง‘์˜ ๋ฒˆ์ง€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ S1, S2, … , Si, … , SR (1≤R≤30,000)์ด ์ฃผ์–ด์ง„๋‹ค. ์นœ์ฒ™ ์ค‘์—๋Š” ๊ฐ™์€ ๋ฒˆ์ง€์— ์‚ด๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•˜์ž.

 

์ถœ๋ ฅํ˜•์‹
์ฒซ์งธ ์ค„์— ์˜ค์ผ๋Ÿฌ๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜์— ์ง‘์„ ๊ตฌํ–ˆ์„ ๊ฒฝ์šฐ์— ๊ทธ ์ง‘์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ ์นœ์ฒ™ ์ง‘๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์˜ ์ดํ•ฉ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋ฒˆ์ง€์ˆ˜๊ฐ€ Si์™€ Sj์ธ ๋‘ ์ง‘ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” dij = |Si - Sj|๋กœ ๊ตฌํ•œ๋‹ค.

 

์ฐธ๊ณ 
๋‘ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ๋งŒ์ผ ์˜ค์ผ๋Ÿฌ์˜ ์ง‘์„ ๋‘ ๋ฒˆ์งธ ์นœ์ฒ™ ์ง‘์ธ 4์™€ ๊ฐ™์€ ์œ„์น˜๋กœ ์ •ํ•œ๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ์นœ์ฒ™ ์ง‘๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” |4 - 2| = 2๊ฐ€ ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์นœ์ฒ™ ์ง‘๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” |4 - 4| = 0์ด ๋˜๊ณ  ์„ธ ๋ฒˆ์งธ ์นœ์ฒ™ ์ง‘๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” |4 - 6| = 2๊ฐ€ ๋˜์–ด ์นœ์ฒ™ ์ง‘๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์˜ ์ดํ•ฉ์€ 4๊ฐ€ ๋œ๋‹ค.

 

 

ํ’€์ด

 

1์ฐจ์‹œ๋„ : ์™œ์•ˆ๋ผ _ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋Š”๋ฐ ๋ฒˆ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์žˆ์—ˆ๋‹ค. (์˜ค์นด๋ฐฉ ๊ณ ์ˆ˜๋‹˜๋“ค์ด ์•Œ๋ ค์ฃผ์‹ฌ ใ… ใ…  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค)

2์ฐจ์‹œ๋„ : ใ„นใ…‡์™œ์•ˆ๋ผ?

#include <stdio.h>

int main(){

    int ans, n, d, sum; //๋ฌธ์ œ์˜ ๋‹ต์ด๋˜๋Š” ์ง‘์€ ans๋ฒˆ์งธ ์ง‘์ด๋ผ๊ณ  ํ•˜์ž,
    scanf("%d\n",&n);
    
    int a[n];

    for(int i=0; i<n; i++){
        scanf("%d ", &a[i]);
	}
    
    if(n%2 == 1){
        ans = n/2 + 1 -1;  //์ง‘ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ผ ๋•Œ : ์ค‘๊ฐ„๋ฒˆ์งธ ์ง‘
    }
    else{
        ans = n/2 -1;  //์ง‘ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ผ ๋•Œ : ์ค‘๊ฐ„+1 or ์ค‘๊ฐ„-1๋ฒˆ์งธ ์ง‘
    }

    for(int i=0; i<n; i++){
        if(i<ans){
            d = a[ans] - a[i];
        }
        else{
            d = a[i] - a[ans];
        }
        
        sum = sum + d;
    }

    printf("%d",sum);

}

youtu.be/RtclG1cX6k4

๋ฐ˜์‘ํ˜•