본문 바로가기
Develop/백준 (Cpp)

[백준] 2965번 : 캥거루 세마리 (C++)

by Tarra 2023. 2. 17.

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