C++

[백준 알고리즘] 11943번 : 파일 옮기기, c++

2022. 3. 18. 18:16

https://www.acmicpc.net/problem/11943

 

11943번: 파일 옮기기

첫 번째 줄에는 첫 번째 바구니에 있는 사과와 오렌지의 수 A, B가 주어진다. (0 ≤ A, B ≤ 1,000) 두 번째 줄에는 두 번째 바구니에 있는 사과와 오렌지의 수 C, D가 주어진다. (0 ≤ C, D ≤ 1,000)

www.acmicpc.net

c++로 백준 11943번 문제를 풀어보겠다.

 

 

 

 

 

문제

두 개의 바구니에 사과와 오렌지가 있다. 첫 번째 바구니에는 사과 A개와 오렌지 B개가 있으며 두 번째 바구니에는 사과 C개와 오렌지 D개가 있다.

당신은 한 바구니에 있는 과일 하나를 집어서 다른 바구니로 옮길 수 있다. 이런 식으로 과일을 옮길 때, 한 바구니에는 사과만 있게 하고 다른 쪽에는 오렌지만 있게 하려고 한다.

앞서 말한 조건을 만족하도록 과일을 옮길 때, 과일을 옮기는 최소 횟수를 구하는 프로그램을 작성하여라.

입력

첫 번째 줄에는 첫 번째 바구니에 있는 사과와 오렌지의 수 A, B가 주어진다. (0 ≤ A, B ≤ 1,000)

두 번째 줄에는 두 번째 바구니에 있는 사과와 오렌지의 수 C, D가 주어진다. (0 ≤ C, D ≤ 1,000)

출력

사과와 오렌지를 옮기는 최소 횟수를 출력한다.

예제 입력 1 복사

1 2
3 4

예제 출력 1 복사

5

 

 

 

 

 

<문제 풀이>

1. A, B, C, D를 선언한 후 값을 입력받는다.

2. B를 옮기게 되면 C도 옮겨야만하고, A를 옮기려 하면 D도 옮겨야하므로

   B, C 그리고 A, D를 짝지어 생각하는 것이 중요한다.

3.

만약 B+C번 움직이는 것이 A+D번 움직이는 것보다 크다면, A+D 경우가 덜 움직이는 것이므로 A+D를 출력한다.

만약 B+C번 움직이는 것과 A+D번 움직이는 것이 같다면, 둘 다 같은 값이므로 둘 중 아무거나 출력한다.

만약 B+C번 움직이는 것이 A+D번 움직이는 것보다 작다면, B+C 경우가 덜 움직이는 것이므로 B+C를 출력한다.

 

 

 

코드는 다음과 같다.