2965번 : 캥거루 세마리
문제 )
캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.
한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.
캥거루는 최대 몇 번 움직일 수 있을까?
입력 :
첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)
출력 :
캥거루가 최대 몇 번 움직일 수 있는지 출력한다.
풀이)
세마리의 캥거루 중
더 가까이에 있는 외부의 캥거루가 중앙의 캥거루 보다 1칸 더 옆으로 이동하면 된다.
예제 2번을 그림으로 표현해보면 이렇게 뛰는 것이 가장 많은 이동횟수를 가질 수 있다.
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
|
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int kang[3];
int a, b, c;
cin >> a >> b >> c;
kang[0] = a, kang[1] = b, kang[2] = c;
int count = 0;
while (1)
{
if (kang[0] == kang[1] || kang[1] == kang[2] || kang[0] == kang[2]) break;
if (kang[1] - kang[0] > kang[2] - kang[1])
{
kang[2] = kang[1] - 1;
}
else if (kang[1] - kang[0] <= kang[2] - kang[1])
{
kang[0] = kang[1] + 1;
}
count++;
sort(begin(kang), end(kang));
}
cout << count - 1;
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/2965
2965번: 캥거루 세마리
첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 2941번 : 크로아티아 알파벳 (C++) (0) | 2023.02.17 |
---|---|
[백준] 11536번 : 줄 세우기 (C++) (0) | 2023.02.17 |
[백준] 3028번 : 창영마을 (C++) (0) | 2023.02.17 |
[백준] 2153번 : 소수 단어 (C++) (0) | 2023.02.17 |
[백준] 2703번 : Cryptoquote (C++) (0) | 2023.02.17 |