1. 문제
문제
두 개의 바구니에 사과와 오렌지가 있다. 첫 번째 바구니에는 사과 A개와 오렌지 B개가 있으며 두 번째 바구니에는 사과 C개와 오렌지 D개가 있다.
당신은 한 바구니에 있는 과일 하나를 집어서 다른 바구니로 옮길 수 있다. 이런 식으로 과일을 옮길 때, 한 바구니에는 사과만 있게 하고 다른 쪽에는 오렌지만 있게 하려고 한다.
앞서 말한 조건을 만족하도록 과일을 옮길 때, 과일을 옮기는 최소 횟수를 구하는 프로그램을 작성하여라.
입력
첫 번째 줄에는 첫 번째 바구니에 있는 사과와 오렌지의 수 A, B가 주어진다. (0 ≤ A, B ≤ 1,000)
두 번째 줄에는 두 번째 바구니에 있는 사과와 오렌지의 수 C, D가 주어진다. (0 ≤ C, D ≤ 1,000)
출력
사과와 오렌지를 옮기는 최소 횟수를 출력한다.
예제 입력
1 2
3 4
예제 출력
5
힌트
[출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음]
2. 해답
이 문제는 간단한 사고력을 요하는 문제로, 한 바구니 기준으로 어떤 과일을 담을지 결정하면 된다.
사과만 담을 것이라면, 1번 바구니의 오렌지 개수와 2번 바구니의 사과 개수
오렌지만 담을 것이라면, 1번 바구니의 사과 개수와 2번 바구니의 오렌지 개수
둘 경우중 가장 적은 쪽을 택하면 된다.
#include <bits/stdc++.h>
using namespace std;
int b[2][2];
int main(){
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
scanf("%d", &b[i][j]);
printf("%d", min(b[0][0]+b[1][1], b[0][1]+b[1][0]));
}
'프로그래밍 > 컴퓨터 알고리즘' 카테고리의 다른 글
[알고리즘] 그래프 - 플로이드 와샬 (0) | 2019.04.06 |
---|---|
[BOJ] 11780 - 플로이드 2 풀이 (0) | 2019.04.06 |
[BOJ] 11944 - NN 풀이 (0) | 2019.04.04 |
[BOJ] 11945 - 뜨거운 붕어빵 풀이 (0) | 2019.04.04 |
[BOJ] 13136 - Do Not Touch Anything 풀이 (0) | 2019.04.04 |