250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Representation Learning
- BOJ
- SSL
- anomaly detection
- 백준
- 논문리뷰
- paper review
- 분할정복
- 분할 정복
- 구현
- 수학
- 문자열
- 재귀
- c++
- 정렬
- 이분탐색
- Multi-Scale Patch
- self supervised learning
Archives
- Today
- Total
갓생살기프로젝트
[백준/BOJ/C++] 2965번 캥거루 세마리 - 구현 본문
728x90
1. 문제
캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.
한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.
캥거루는 최대 몇 번 움직일 수 있을까?
2. 입력
첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)
3. 출력
캥거루가 최대 몇 번 움직일 수 있는지 출력한다.
4. 풀이
캥거루가 최대한 많이 움직이기 위해서는 각 캥거루 사이의 거리가 많이 남아있는 쪽으로 나머지 한 캥거루가 움직여야한다. 그리고 그 캥거루가 움직일때 각 캥거루 바로 옆 좌표로 움직여야지만 거리가 많이 확보되어서 최대한으로 움직일 수 있다.
예를 들어, 캥거루의 초기 위치가 1 3 7이라고 할 때, 밑에 표와 같이 움직였을때 최대값 3이 나온다.
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
처음 위치 | A | B | C | ||||
1번 움직임 | B | A | C | ||||
2번 | A | B | C | ||||
3번 | B | A | C |
이를 간단하게 표현하면 아래 코드의 식과 같다.
5. 소스코드
#include <iostream>
using namespace std;
int main(){
int A, B, C;
cin>>A>>B>>C;
int result = 0;
//B와 A 사이의 거리가 C와 B사이의 거리보다 크거나 같을 때
if(B - A >= C - B){
C = B - 1;
result = C - A;
}
//B와 C 사이의 거리가 B와 A사이의 거리보다 크거나 같을 때
if(C - B >= B - A){
A = B + 1;
result = C - A;
}
cout<<result;
}
728x90
'차근차근 알고리즘 > etc.' 카테고리의 다른 글
[백준/BOJ/C++] 11650번 좌표 정렬하기 - 정렬 (0) | 2021.01.29 |
---|---|
[백준/BOJ/C++] 10814번 나이순 정렬 - 정렬 (0) | 2021.01.29 |
[백준/BOJ/C++] 10819번 차이를 최대로 - 완전탐색 (0) | 2021.01.29 |
[백준/BOJ/C++] 2503번 숫자야구 - 완전탐색 (0) | 2021.01.29 |
[백준/BOJ/C++] 17608번 막대기 - 구현 (0) | 2021.01.26 |