본문 바로가기

Algorithm/Greedy

(C++) - 백준(BOJ) 11908 : 카드

반응형

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

 

11908번: 카드

승현이는 앞면과 뒷면이 있는 카드 n장을 가지고 있습니다. 각 카드의 앞면에는 1 이상 2222 이하의 정수가 적혀 있으며, 이 수는 카드마다 서로 다릅니다. 각 카드의 뒷면에는 동물 그림이 그려져

www.acmicpc.net

greedy문제였습니다.

📕 풀이방법

📔 입력 및 초기화

수의 개수 n, 정답을 출력할 sum, 수의 정보를 입력받을 vector v를 선언한 후 적절히 입력받습니다.

📔 풀이과정

두 수를 비교해 작은 수는 주머니로 이동합니다. 이 규칙에 의해 가장 큰 수는 어떻게 해도 주머니로 이동할 수 없습니다. 따라서 주머니에 들어 있는 수들의 최대합은 가장 큰 수를 제외한 나머지 수들이 됩니다.

1. v를 오름차순으로 정렬합니다.

2. 마지막 원소는 가장 큰 수가 되므로 이 수를 제외한 나머지들은 sum에 더해줍니다.

📔 정답출력

sum을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;

int n, sum;
vector <int> v;

int main(){
  cin >> n;
  v.resize(n);

  for(int i = 0; i < n; i++) cin >> v[i];
  sort(v.begin(), v.end());

  for(int i = 0; i < v.size() - 1; i++) sum += v[i];
  cout << sum;
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.