자료구조&알고리즘/백준
[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 이렇게 세번이 된다
학습
간격이 더 넓은곳이 정답이라는 알고리즘을(?) 생각을 못했다 이런 방법도 있다는걸 까묵지말고 다음번에 활용해보도록하좌
출처