๋ฌธ์
๊น์ง๋ฏผ์ N๋ช ์ด ์ฐธ๊ฐํ๋ ์คํ ํ ๋๋จผํธ์ ์ง์ถํ๋ค. ํ ๋๋จผํธ๋ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค. ์ผ๋จ N๋ช ์ ์ฐธ๊ฐ์๋ ๋ฒํธ๊ฐ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ๋ฐฐ์ ๋ฐ๋๋ค. ๊ทธ๋ฌ๊ณ ๋ ํ์ ์๋ก ์ธ์ ํ ๋ฒํธ๋ผ๋ฆฌ ์คํ๋ฅผ ํ๋ค. ์ด๊ธด ์ฌ๋์ ๋ค์ ๋ผ์ด๋์ ์ง์ถํ๊ณ , ์ง ์ฌ๋์ ๊ทธ ๋ผ์ด๋์์ ๋จ์ด์ง๋ค. ๋ง์ฝ ๊ทธ ๋ผ์ด๋์ ์ฐธ๊ฐ์๊ฐ ํ์๋ช ์ด๋ผ๋ฉด, ๋ง์ง๋ง ๋ฒํธ๋ฅผ ๊ฐ์ง ์ฐธ๊ฐ์๋ ๋ค์ ๋ผ์ด๋๋ก ์๋ ์ง์ถํ๋ค. ๋ค์ ๋ผ์ด๋์์ ๋ค์ ์ฐธ๊ฐ์์ ๋ฒํธ๋ฅผ 1๋ฒ๋ถํฐ ๋งค๊ธด๋ค. ์ด๋, ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ ์์๋ ์ฒ์ ๋ฒํธ์ ์์๋ฅผ ์ ์งํ๋ฉด์ 1๋ฒ๋ถํฐ ๋งค๊ธด๋ค. ์ด ๋ง์ 1๋ฒ๊ณผ 2๋ฒ์ด ์คํ๋ฅผ ํด์ 1๋ฒ์ด ์ง์ถํ๊ณ , 3๋ฒ๊ณผ 4๋ฒ์ด ์คํ๋ฅผ ํด์ 4๋ฒ์ด ์ง์ถํ๋ค๋ฉด, 4๋ฒ์ ๋ค์ ๋ผ์ด๋์์ ๋ฒํธ 2๋ฒ์ ๋ฐฐ์ ๋ฐ๋๋ค. ๋ฒํธ๋ฅผ ๋ค์ ๋ฐฐ์ ๋ฐ์ ํ์ ํ ๋ช ๋ง ๋จ์ ๋๊น์ง ๋ผ์ด๋๋ฅผ ๊ณ์ ํ๋ค.
๋ง์นจ ์ด ์คํ ๋ํ์ ์ํ์๋ ์ฐธ๊ฐํ๋ค. ๊น์ง๋ฏผ์ ๊ฐ์๊ธฐ ์คํ ๋ํ์์ ์ฐ์นํ๋ ์์ฌ์ ์์ด์ง๊ณ , ๋ช ๋ผ์ด๋์์ ์ํ์์ ๋๊ฒฐํ๋์ง ๊ถ๊ธํด์ก๋ค. ์ผ๋จ ๊น์ง๋ฏผ๊ณผ ์ํ์๋ ์๋ก ๋๊ฒฐํ๊ธฐ ์ ๊น์ง ํญ์ ์ด๊ธด๋ค๊ณ ๊ฐ์ ํ๋ค. 1 ๋ผ์ด๋์์ ๊น์ง๋ฏผ์ ๋ฒํธ์ ์ํ์์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง ๋, ๊ณผ์ฐ ๊น์ง๋ฏผ๊ณผ ์ํ์๊ฐ ๋ช ๋ผ์ด๋์์ ๋๊ฒฐํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐธ๊ฐ์์ ์ N๊ณผ 1 ๋ผ์ด๋์์ ๊น์ง๋ฏผ์ ๋ฒํธ์ ์ํ์์ ๋ฒํธ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. N์ 2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , ๊น์ง๋ฏผ์ ๋ฒํธ์ ์ํ์์ ๋ฒํธ๋ N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , ์๋ก ๋ค๋ฅด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊น์ง๋ฏผ๊ณผ ์ํ์๊ฐ ๋๊ฒฐํ๋ ๋ผ์ด๋ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ์๋ก ๋๊ฒฐํ์ง ์์ ๋๋ -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
16 1 2
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
1
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
16 8 9
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
4
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
1000 20 31
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
4
์์ ์ ๋ ฅ 4 ๋ณต์ฌ
65536 1000 35000
์์ ์ถ๋ ฅ 4 ๋ณต์ฌ
16
์์ ์ ๋ ฅ 5 ๋ณต์ฌ
60000 101 891
์์ ์ถ๋ ฅ 5 ๋ณต์ฌ
10
ํ์ด๊ณผ์
๋ฌธ์ ์์ ํ ๋๋จผํธ๋ก ๊ฒฝ๊ธฐ๊ฐ ์ด๋ฃจ์ด์ง๊ธฐ๋๋ฌธ์ ๊ฒฝ๊ธฐ์์ ์ด๊ธฐ๋ฉด ๋ค์ ๋ฒํธ๋
(๊ธฐ์กด๋ฒํธ / 2) = ๋ค์๋ฒํธ ํ์์ผ๋ก ์งํ์ด ๋๊ณ ๊ธฐ์กด๋ฒํธ๊ฐ ( ๋ฒํธ(์ง์) / 2 ) ์ด๊ณ ( (๋ฒํธ(ํ์) + 1) / 2๋ก ์งํ์ด ๋๊ฒ๋๋ค.
์ด๋ฌํ ํ์์ผ๋ก ๋ฌธ์ ๊ฐ ์งํ์ด ๋๊ณ
ํ ๋๋จผํธ์ ๊ฒฝ์ฐ์๋ 1 2 ๋ ๋ฐ๋ก ๋ง๋๋ ๊ฒฝ๊ธฐ์ด์ง๋ง 8 9 ์ ๊ฒฝ์ฐ์๋ 7 vs 8 9 vs 10 ์ผ๋ก ๋ฐ๋ก ๋ง๋์ง์๋ ๊ฒฝ๊ธฐ๋ก ์งํ์ด ๋๋ค.
๊ทธ๋์ ์ด๋ฌํ ๋ถ๋ถ๋ ์ ๊ฒฝ์ ์จ์ ๋ฌธ์ ๋ฅผ ์งํํด์ผํ๋๋ฐ.
๋์ ๊ฒฝ์ฐ์๋ ์จ๋ 2๋ช ์ด ์๋ก ๋ง๋๋ค๋ ๊ฑฐ๋ ๋ฒํธ์ ์ฐจ์ด๊ฐ 1 ์ด๋ผ๋ ๊ฒ์ด๊ณ
์๋ฅผ ๋ค์ด 1 vs 2 , 3 vs 4 , 5 vs 6 , 7 vs 8 , 9 vs 10 ์์ผ๋ก ๊ฒฝ๊ธฐ๊ฐ ์งํ๋๋ค๋ฉด ๋ชจ๋ ๊ฒฝ๊ธฐ๋ ํฐ ๊ฐ์ด ์ง์๋ผ๋ ํน์ง์ด ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก
8๊ณผ 9๊ฐ ์๋ค๋ฉด ํ์๊ฐ ๋ ํฐ ๊ฐ์ด๋ฏ๋ก ๋ง๋ ์ ์๋ ๊ฒฝ๊ธฐ๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
code
#include <iostream>
#include <algorithm>
int main(void)
{
int n, k, l, count;
std::cin >> n >> k >> l;
count = 0;
while (true)
{
count++;
if (k - l == -1 || k - l == 1)
if (std::max(k, l) % 2 == 0)
break;
if (k % 2 != 0) k++;
if (l % 2 != 0) l++;
k = k / 2;
l = l / 2;
}
std::cout << count;
return (0);
}
ํ๊ธฐ
์ ์ ๋ ์ข์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ์ํด์ ์ฝ๋์ง๋ ์ต๊ด์ด ๋ฐ๋์ด๊ฐ๋๊ฒ์ด ๋ณด์ฌ์ ๋ง์์ ๋ ๋ค.
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 9655๋ฒ - ๋ ๊ฒ์ (C++) (0) | 2023.07.11 |
---|---|
[๋ฐฑ์ค] 14501๋ฒ - ํด์ฌ, 15486๋ฒ - ํด์ฌ 2 (C++) (1) | 2023.07.10 |
[๋ฐฑ์ค] 1049๋ฒ - ๊ธฐํ์ค (C++) (0) | 2023.07.08 |
[๋ฐฑ์ค] 7795๋ฒ - ๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ (C++) (0) | 2023.07.07 |
[๋ฐฑ์ค] 2193๋ฒ - ์ด์น์ (C++) (0) | 2023.07.06 |