작성일 :

문제 링크

11943번 - 파일 옮기기

설명

두 바구니에 사과와 오렌지가 각각 들어 있을 때,
서로 다른 바구니에서 하나씩 골라 합이 최소가 되도록 옮기는 문제입니다.

  • 첫 번째 줄: 첫 번째 바구니사과 개수오렌지 개수가 주어집니다.
  • 두 번째 줄: 두 번째 바구니사과 개수오렌지 개수가 주어집니다.
  • 바구니에서 사과와 오렌지를 하나씩 옮겨야 하는데, 서로 다른 바구니에서 하나씩 골라야 합니다.
  • 즉, 첫 번째 바구니사과 + 두 번째 바구니오렌지 또는
    두 번째 바구니사과 + 첫 번째 바구니오렌지더 작은 합을 선택해야 합니다.

접근법

  • 두 바구니로부터 각각 (사과, 오렌지)의 값을 입력받습니다.
  • 가능한 조합은 두 가지뿐이므로, 두 경우의 합을 직접 비교하여 최소값을 출력하면 됩니다.
  • 단순한 조건 비교 문제이며, 시간 복잡도는 O(1)입니다.

Code

C#

1
2
3
4
5
6
7
8
9
10
11
using System;

class Program {
  static void Main() {
    var ab = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
    var cd = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);

    int res = Math.Min(ab[0] + cd[1], cd[0] + ab[1]);
    Console.WriteLine(res);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int cntAppleA, cntOrangeA; cin >> cntAppleA >> cntOrangeA;
  int cntAppleB, cntOrangeB; cin >> cntAppleB >> cntOrangeB;
  int ans = min(cntAppleA + cntOrangeB, cntAppleB + cntOrangeA);
  cout << ans << "\n";

  return 0;
}