작성일 :

문제 링크

11948번 - 과목선택

설명

6과목의 시험 점수가 주어질 때,

과학 계열 4과목 중 3과목인문 계열 2과목 중 1과목을 선택하여,

점수의 합이 가장 높도록 선택한 후 그 합을 출력하는 문제입니다.


접근법

  • 먼저 총 6과목의 점수를 차례대로 입력받습니다.
    • 앞의 4줄은 물리, 화학, 생물, 지구과학의 점수로 과학 계열입니다.
    • 뒤의 2줄은 역사와 지리의 점수로 인문 계열입니다.
  • 과학 계열 4과목 중에서는 점수가 가장 낮은 한 과목을 제외한 3과목의 합을 구합니다.
  • 인문 계열 2과목 중에서는 점수가 더 높은 과목 1개만 선택합니다.
  • 이 둘을 더한 값이 선택할 수 있는 최고 점수이며, 해당 값을 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Linq;

class Program {
  static void Main() {
    var science = new int[4];
    for (int i = 0; i < 4; i++)
      science[i] = int.Parse(Console.ReadLine());

    var social = new int[2];
    for (int i = 0; i < 2; i++)
      social[i] = int.Parse(Console.ReadLine());

    int sumScience = science.Sum() - science.Min();
    int maxSocial = social.Max();

    Console.WriteLine(sumScience + maxSocial);
  }
}

C++

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

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

  int a[4], b[2], ans = 0;
  for (int i = 0; i < 4; i++) cin >> a[i], ans += a[i];
  ans -= *min_element(a, a + 4);
  for (int i = 0; i < 2; i++) cin >> b[i], ans += b[i];
  ans -= *min_element(b, b + 2);

  cout << ans << "\n";

  return 0;
}