https://www.acmicpc.net/problem/1094
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#include <iostream>
bool binaryArr[8];
int X, ans;
void input()
{
std::cin >> X;
}
void solve(int stk, int up, int down)
{
int mid = up + (down - up) / 2;
if (mid == X || down == X)
{
ans = stk;
return;
}
else if (mid < X)
{
solve(stk + 1, mid + 1, down);
}
else if (mid > X)
{
solve(stk + 1, up, mid - 1);
}
}
void binary_solve()
{
int i = 1;
while (X != 0)
{
binaryArr[i++] = X % 2;
X /= 2;
}
for (int i = 1; i < 8; ++i)
{
if (binaryArr[i])
{
++ans;
}
}
}
void output()
{
std::cout << ans;
}
int main()
{
input();
//solve(1, 1, 64);
binary_solve();
output();
return 0;
}
|
cs |
첨엔 이분탐색 아녀?? 했다가
아차차
33같은 경우엔 32cm 막대 하나랑 1cm 막대 하나가 필요하다
헌데 막대를 자르는 기준은 절반으로 나누는 것이고
최대 막대 길이는 64이다
64 32 16 8 4 2 1
아하!
'알고리즘' 카테고리의 다른 글
백준 9517 : 아이 러브 크로아티아 (0) | 2020.07.21 |
---|---|
백준 14890 : 경사로 (0) | 2020.07.17 |
백준 2455 : 지능형 기차 (0) | 2020.07.16 |
백준 14889 : 스타트와 링크 (0) | 2020.07.15 |
koi : 선물(M) (0) | 2020.07.14 |