๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™(Level 2)

by ์•ˆ์ฃผํ˜• 2022. 5. 1.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™

OO ์—ฐ๊ตฌ์†Œ๋Š” ํ•œ ๋ฒˆ์— K ์นธ์„ ์•ž์œผ๋กœ ์ ํ”„ํ•˜๊ฑฐ๋‚˜, (ํ˜„์žฌ๊นŒ์ง€ ์˜จ ๊ฑฐ๋ฆฌ) x 2 ์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜๋กœ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์•„์ด์–ธ ์ŠˆํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ํŒ๋งคํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„์ด์–ธ ์Šˆ

programmers.co.kr

 

์ฝ”๋“œ

#include <iostream>
using namespace std;

// ์ ํ”„: ๋ฒ ํ„ฐ๋ฆฌ ๋“ฌ, ์ˆœ๊ฐ„์ด๋™: ๋ฐฐํ„ฐ๋ฆฌ ์•ˆ๋“ฌ
// ๊ฑฐ๊พธ๋กœ ๊ณ„์‚ฐ
int solution(int n){
    int battery = 0;
    while(n>2){
        if(n&1){
            battery++;
            n--;
        }
        else n/=2;
    }
    return battery+1;
}

 

ํ’€์ด

์ฒ˜์Œ์— ๋ฐฑํŠธ๋ž™ํ‚น์œผ๋กœ ์™„์ „ ํƒ์ƒ‰์„ ํ•ด๋ณผ๊นŒ ์‹ถ์—ˆ์ง€๋งŒ ๋„ˆ๋ฌด๋‚˜๋„ ํฐ ์ž…๋ ฅ๊ฐ’์— ํฌ๊ธฐํ•˜๊ณ , ๊ทœ์น™์„ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” 0์—์„œ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ n์—์„œ๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ 0์„ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฑฐ๋ฆฌ๊ฐ€ ์ง์ˆ˜์ผ ๋•Œ๋Š” ์ˆœ๊ฐ„์ด๋™์ด๊ธฐ์— 2๋กœ ๊ณ„์† ๋‚˜๋ˆ ์ฃผ๊ณ , ํ™€์ˆ˜์ผ ๋•Œ๋Š” -1์„ ํ•ด์ฃผ์–ด ์ ํ”„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ 1์—์„œ 0์œผ๋กœ ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ์ ํ”„๋ฅผ ํ•ด์•ผ ํ•˜๋‹ˆ return ๊ฐ’์— +1์„ ํ•ด์ฃผ์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€