프로그래밍/컴퓨터 알고리즘

[BOJ] 11943 - 파일 옮기기 풀이

포도알77 2019. 4. 4. 22:09

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]));
}

 

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사