๋ฌธ์ œ

https://www.acmicpc.net/problem/1094

์„ค๋ช…

์ด๋ฌธ์ œ๋Š” ์ดํ•ด๋งŒ ํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ๋Š”๊ฒƒ ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์•˜๋Š”๋ฐ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ๋งŒ ๊ฑฐ์˜ ๋ฌธ์ œํ’€์ด ์‹œ๊ฐ„์˜ 90 ํผ์„ผํŠธ๊ฐ€ ์†Œ์š”ํ–ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•ด ๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋‚ด๊ฐ€ ์ž๋ฅธ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด์–ด ๋ถ™ํ˜€ 23CM ์˜ ๋ง‰๋Œ€๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ์น˜์ž. ๋จผ์ € ์ฒ˜์Œ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ง‰๋Œ€์˜ ๊ธธ์ด๋Š” 64CM ์ด๊ณ  ์ด๊ฒƒ์„ ๋ฐ˜์œผ๋กœ ๊ฐ€๋ฅด๋ฉด ๋‘๊ฐœ์˜ 32CM ๋ง‰๋Œ€๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด์ค‘ ํ•˜๋‚˜์˜ ๋ง‰๋Œ€ 32CM ์™€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ง‰๋Œ€์˜ ๊ธธ์ด 23CM ๋ž‘ ๋น„๊ตํ–ˆ์„๋–„ 32CM ๊ฐ€ ๋” ๊ธธ๊ธฐ๋•Œ๋ฌธ์— ์ž๋ฅธ๋ง‰๋Œ€์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‹ค์‹œ ์œ„ ๊ณผ์ •์„ ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜์œผ๋กœ ๊ฐ€๋ฅธ ๋ง‰๋Œ€์ค‘ ํ•˜๋‚˜์˜ ๊ธธ์ด๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๋ชฉํ‘œํ•˜๋Š” ๋ง‰๋Œ€์˜ ๊ธธ์ด๋ณด๋‹ค ์งง์•„์งˆ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. ์ด ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ์—๋Š” 16CM ์—์„œ ์ด ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•˜๊ฒŒ ๋ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 16CM ๋ง‰๋Œ€ 2 ๊ฐœ๊ฐ€ ๋‚จ๊ฒŒ ๋˜๋Š”๋ฐ ์ด์ค‘ ํ•˜๋‚˜์˜ ๋ง‰๋Œ€๋Š” ๊ณ„์† ์ชผ๊ฐœ๋ฉด 16, 8 , 4 , 2, 1 โ€ฆ ๋กœ ์ชผ๊ฐœ์ง€๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ด ๋ง‰๋Œ€๋“ค์„ ์ด์–ด์„œ 23CM ๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด 16CM, 4CM, 2CM, 1CM ์˜ ๋ง‰๋Œ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข…์ ์œผ๋กœ 4 ๊ฐœ์˜ ๋ง‰๋Œ€๊ฐ€ ์กด์žฌํ•ด์•ผ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธธ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฐ๋ก ์— ์ด๋ฅด๊ฒŒ ๋˜์–ด 23 ์„ ๋„ฃ์—ˆ์„๋–„ 4 ๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ•˜๋Š” ์†Œ์Šค๋ฅผ ์งœ๋ฉด ์ •๋‹ต์ด๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฒซ๋ฒˆ์งธ ๊ณผ์ •, 16CM ๊นŒ์ง€ ๋ง‰๋Œ€๋ฅผ ๋ฐ˜์œผ๋กœ ๊ฐ€๋ฅด๋Š” ๋ถ€๋ถ„๊นŒ์ง€๋Š” ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ ๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” ์กฐํ•ฉ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์šฐ๋ฆฌ๊ฐ€ ๋ชฉํ‘œํ•˜๋Š” ๊ธธ์ด๋ฅผ ๋งž์ถœ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•ด์•ผํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ for๋ฌธ, ์ฆ‰ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•ด ๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๊ทธ๊ฑด ๋„ˆ๋ฌด ํ•˜๋“œ์ฝ”๋”ฉ, ์ฆ‰ ๋น„ํšจ์œจ์ ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๋˜ ๋„์ค‘ ๋ชฉํ‘œํ•˜๋Š” ๊ธธ์ด ๊ฐ’์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ž๋ฅธ ๋ง‰๋Œ€์˜ ๊ธธ์ด๋ฅผ ์ฐจ๋ก€์ฐจ๋ก€ ๋นผ๋ฉด ์ตœ์ข…์ ์œผ๋กœ ๋ช‡๊ฐœ์˜ ๋ง‰๋Œ€๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.์˜ˆ๋ฅผ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ 23CM ์˜ ๊ธธ์ด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ง‰๋Œ€๋Š” ์œ„ ์˜ˆ์‹œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด 16, 8, 4, 2, 1CM(1CM ๋ง‰๋Œ€๋Š” ๋‘๊ฐœ)๊ฐ€ ๋˜๋Š”๋ฐ ์œ„์—์„œ ๋งํ•œ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜๋ฉด 23CM ์—์„œ 16CM ๋ง‰๋Œ€์˜ ๊ธธ์ด๋ฅผ ๋นผ๋ฉด 7CM ๊ฐ€ ๋˜๊ณ  8CM ๋Š” 7CM ๋ณด๋‹ค ํฌ๋ฏ€๋กœ ๋„˜๊ธฐ๊ณ  ๋‚˜๋จธ์ง€ ์ฐจ๋ก€๋Œ€๋กœ 4, 2, 1CM ๊ธธ์ด์˜ ๋ง‰๋Œ€๋ฅผ ๋บด๋ฉด ์ตœ์ข…์ ์œผ๋กœ 23CM ๊ธธ์ด์˜ ๋ง‰๋Œ€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ์ด 4 ๊ฐœ์˜ ๋ง‰๋Œ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ

#include <stdio.h>

int main() {
    int goal_len,start_len = 64,pole_ea=1; // ๋ชฉํ‘œ๊ธธ์ด / ์‹œ์ž‘๊ธธ์ด = 64 / ์ด์–ด๋ถ™ํžŒ ๋ง‰๋Œ€ ๊ฐฏ์ˆ˜
    scanf("%d",&goal_len);
    while(start_len > goal_len) //๋ฐ˜๊ฐœ์ค‘ ํ•˜๋‚˜๊ฐ€ ํƒˆ๋ฝํ•˜์ง€ ์•Š์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
        start_len /= 2;
    goal_len -= start_len; //๋”์ด์ƒ ํ•œ๊ฐœ๊ฐ€ ํƒˆ๋ฝ๋ ์ผ์ด ์—†์œผ๋ฏ€๋กœ ์•ž์œผ๋กœ ์ž˜๋ ค์ง€๋Š” ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ด์–ด๋ถ™์ด๊ธฐ ์œ„ํ•ด ์ œ์ผ ํฐ ๊ธธ์ด์˜ ๋ง‰๋Œ€์˜ ๊ธธ์ด๋ฅผ ๋บ€๋‹ค.
    while(goal_len != 0)    //๋‚˜๋จธ์ง€ ๋ง‰๋Œ€๋ฅผ ๋ฌดํ•œ์ • ์ž˜๋ผ ๊ธธ์ด๋ฅผ ๋นผ์„œ ์ตœ์ข…์ ์œผ๋กœ ์ด์–ด๋ถ™ํžŒ ๊ธธ์ด์™€ ๋ชฉํ‘œ๊ธธ์ด๊ฐ€ ๊ฐ™์•„์งˆ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
    {
        start_len /= 2;
        if(goal_len >= start_len)
        {
            goal_len -= start_len;
            pole_ea++;
        }
    }
    printf("%d\n",pole_ea);
    return 0;
}