www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

#include <iostream>
#include <algorithm>
using namespace std;

int main(void)
{
  int key[9];
  int sum = 0;
  // 9명 입력받고 총합 구해준뒤
  for(int i = 0 ; i < 9 ; i++)
  {
    cin >> key[i];
    sum += key[i];
  }
  // 정렬을 먼저 해준다
  sort(key, key + 9);
  // 2명의 합이 나와야 할 값
  int tar = sum - 100;
  for(int i = 0 ; i < 9 ; i++)
  {
    bool end = false;
    for(int j = i + 1 ; j < 9 ; j++)
    {
      // 2중반복을 전체를 돌며 2명의 합 구하고
      if(key[i] + key[j] == tar)
      {
        // 둘 다 0으로 바꿔준 뒤 반복 종료
        key[i] = 0;
        key[j] = 0;
        end = true;
        break;
      }
    }
    if(end) break;
  }
  // 0 이 아닌 7명 난쟁이들을 출력
  for(int i = 0 ; i < 9 ; i++)
  {
    if(key[i] != 0) cout << key[i] << '\n';
  }
}

 

[Try]

1. 9명의 합을 구해놓고 2명의 합을 뺐을때 100이 되는 친구들을 골라준다

 

[Point]

1. 알고리즘 헤더의 next_permutation(순열 구하기)

'PS > BOJ' 카테고리의 다른 글

[백준] 1075.cpp : 나누기  (0) 2020.06.17
[백준] 5585.cpp : 거스름돈  (0) 2020.06.16
[백준] 1316.cpp : 그룹 단어 체커  (0) 2020.06.14
[백준] 2748.cpp : 피보나치 수 2  (0) 2020.06.12
[백준] 1094.cpp : 막대기  (0) 2020.06.12

+ Recent posts