๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ - C++

.23 2024. 4. 4. 18:06
๋ฌธ์ œ

โ–ณโ–ณ ๊ฒŒ์ž„๋Œ€ํšŒ๊ฐ€ ๊ฐœ์ตœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋Œ€ํšŒ๋Š” N๋ช…์ด ์ฐธ๊ฐ€ํ•˜๊ณ , ํ† ๋„ˆ๋จผํŠธ ํ˜•์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. N๋ช…์˜ ์ฐธ๊ฐ€์ž๋Š” ๊ฐ๊ฐ 1๋ถ€ํ„ฐ N๋ฒˆ์„ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฐ์ •๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , 1๋ฒˆ↔2๋ฒˆ, 3๋ฒˆ↔4๋ฒˆ, ... , N-1๋ฒˆ↔N๋ฒˆ์˜ ์ฐธ๊ฐ€์ž๋ผ๋ฆฌ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฒŒ์ž„์—์„œ ์ด๊ธด ์‚ฌ๋žŒ์€ ๋‹ค์Œ ๋ผ์šด๋“œ์— ์ง„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‹ค์Œ ๋ผ์šด๋“œ์— ์ง„์ถœํ•  ์ฐธ๊ฐ€์ž์˜ ๋ฒˆํ˜ธ๋Š” ๋‹ค์‹œ 1๋ฒˆ๋ถ€ํ„ฐ N/2๋ฒˆ์„ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฐ์ •๋ฐ›์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ 1๋ฒˆ↔2๋ฒˆ ๋ผ๋ฆฌ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์—์„œ 2๋ฒˆ์ด ์Šน๋ฆฌํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋ผ์šด๋“œ์—์„œ 1๋ฒˆ์„ ๋ถ€์—ฌ๋ฐ›๊ณ , 3๋ฒˆ↔4๋ฒˆ์—์„œ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์—์„œ 3๋ฒˆ์ด ์Šน๋ฆฌํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋ผ์šด๋“œ์—์„œ 2๋ฒˆ์„ ๋ถ€์—ฌ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„์€ ์ตœ์ข… ํ•œ ๋ช…์ด ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, ์ฒ˜์Œ ๋ผ์šด๋“œ์—์„œ A๋ฒˆ์„ ๊ฐ€์ง„ ์ฐธ๊ฐ€์ž๋Š” ๊ฒฝ์Ÿ์ž๋กœ ์ƒ๊ฐํ•˜๋Š” B๋ฒˆ ์ฐธ๊ฐ€์ž์™€ ๋ช‡ ๋ฒˆ์งธ ๋ผ์šด๋“œ์—์„œ ๋งŒ๋‚˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์ฐธ๊ฐ€์ž ์ˆ˜ N, ์ฐธ๊ฐ€์ž ๋ฒˆํ˜ธ A, ๊ฒฝ์Ÿ์ž ๋ฒˆํ˜ธ B๊ฐ€ ํ•จ์ˆ˜ solution์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ฒ˜์Œ ๋ผ์šด๋“œ์—์„œ A๋ฒˆ์„ ๊ฐ€์ง„ ์ฐธ๊ฐ€์ž๋Š” ๊ฒฝ์Ÿ์ž๋กœ ์ƒ๊ฐํ•˜๋Š” B๋ฒˆ ์ฐธ๊ฐ€์ž์™€ ๋ช‡ ๋ฒˆ์งธ ๋ผ์šด๋“œ์—์„œ ๋งŒ๋‚˜๋Š”์ง€ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋‹จ, A๋ฒˆ ์ฐธ๊ฐ€์ž์™€ B๋ฒˆ ์ฐธ๊ฐ€์ž๋Š” ์„œ๋กœ ๋ถ™๊ฒŒ ๋˜๊ธฐ ์ „๊นŒ์ง€ ํ•ญ์ƒ ์ด๊ธด๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

์ œํ•œ์‚ฌํ•ญ
  • N : 21 ์ด์ƒ 220 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜ (2์˜ ์ง€์ˆ˜ ์Šน์œผ๋กœ ์ฃผ์–ด์ง€๋ฏ€๋กœ ๋ถ€์ „์Šน์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
  • A, B : N ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜ (๋‹จ, A ≠ B ์ž…๋‹ˆ๋‹ค.)
์ž…์ถœ๋ ฅ ์˜ˆ

 


๊ตฌํ˜„

๊ฐ„๋‹จํ•œ ์ˆ˜ํ•™ ๋ฌธ์ œ

 

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ฌธ์ œ ์กฐ๊ฑด์—์„œ A์™€ B๋Š” ํ•ญ์ƒ ์ด๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, A์™€ B๊ฐ€ ๋‹ค์Œ ๋ผ์šด๋“œ์—์„œ ๋ช‡ ๋ฒˆ์„ ๋ถ€์—ฌ๋ฐ›๋Š”์ง€๋Š” ๊ฐ๊ฐ (A + 1) / 2, (B + 1) / 2๋ฅผ ํ†ตํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ์ง„์ถœ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„์ด A์™€ B๊ฐ€ ๊ฐ™์€ ์กฐ๊ฐ€ ๋˜์–ด ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋˜๋ฏ€๋กœ, A์™€ B๊ฐ€ ๊ฐ™์•„์งˆ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ
#include <iostream>

using namespace std;

int solution(int n, int a, int b)
{
    int answer = 0;
    
    while(a != b) {
        a = (a + 1) / 2;
        b = (b + 1) / 2;
        
        answer++;
    }

    return answer;
}
Comments