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를 출력한다.
코드는 다음과 같다.
'C++' 카테고리의 다른 글
[백준 알고리즘] 11091번 : 알파벳 전부 쓰기, c++ (0) | 2022.03.19 |
---|---|
[백준 알고리즘] 5026번 : 박사 과정, c++ (0) | 2022.03.19 |
[백준 알고리즘] 6359번 : 만취한 상범, c++ (0) | 2022.03.18 |
[백준 알고리즘] 1920번 : 수 찾기, c++ (0) | 2022.03.17 |
[백준 알고리즘] 5524번 : 입실 관리, c++ (0) | 2022.03.17 |