자료구조&알고리즘/백준

[C++] 백준 2965번 - 캥거루 세마리

celinayk 2023. 1. 23. 21:32
반응형

문제

캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.
한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.
캥거루는 최대 몇 번 움직일 수 있을까?

입력

첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)

출력

캥거루가 최대 몇 번 움직일 수 있는지 출력한다.

코드

#define _CRT_SECURE_NO_WARNINGS
#include <iostream> 
#include <algorithm>
using namespace std;

int main() {
    
    int a, b,c;
    int cnt = 0;
    scanf("%d %d %d", &a, &b, &c);

    printf("%d",max(b - a - 1, c - b - 1));

    return 0;
}

리뷰

되게 복잡할 것 같았ㄴ지만 굉장히 간단한 문제다

결론은 제일큰수-두번째수-1 vs 두번째수-첫번째수-1 해서 큰수가 정답이다

3  5     9 이렇게 있으면 5와9사이의 간격이 더 넓다 그러니까 3의 숫자는 여기 사이로 뛰어드는게 이득이다

5 6   9 이렇게 됨 여기서 6과 9사이의 간격이 더 넓으므로 여기 사이로 뛰어든다

67  9

7 8 9 이렇게 세번이 된다 

학습

간격이 더 넓은곳이 정답이라는 알고리즘을(?) 생각을 못했다 이런 방법도 있다는걸 까묵지말고 다음번에 활용해보도록하좌

출처

2965번: 캥거루 세마리 (acmicpc.net)