[BOJ/2309번] 일곱 난쟁이

베뉴·2022년 11월 25일
0

2309번:: 일곱 난쟁이

순열을 기반한 조합의 요소들 탐색하는 것이 핵심인 문제

💻 [코드 ver.1]

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  int a[10];
  for(int i = 0 ;i < 9; i++) cin >> a[i];
  sort(a, a+9); // 입력값들에 대해 오름차순 정렬
  do {
    int sum = 0; 
    for(int i = 0 ; i < 7; i++) sum += a[i]; //9개 요소 중 7개뽑기
    if(sum == 100) break; //합이 100이면 그것이 답
  }while(next_permutation(a, a+9)); //9개 순열 뽑기
  for(int i = 0 ; i < 7; i++) cout << a[i] << "\n";
  return 0;
}

💻 [코드 ver.2]

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int a[9];
pair<int, int> ans_index;
int sum;
vector<int> v;
void solve() {
  for(int i = 0 ; i < 9; i++) {
    for(int j = 0 ; j < i; j++) {
      if(sum - a[i] - a[j] == 100) {
          ans_index = {i, j};
        }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  for(int i = 0; i < 9; i++) {
    cin >> a[i]; sum += a[i];
  }
  solve();
  for(int i = 0; i < 9; i++) {
    if(ans_index.first == i || ans_index.second == i) continue;
    v.push_back(a[i]);
  }
  sort(v.begin(), v.end());
  for(int i : v) cout << i << " ";
  return 0;
}
profile
백문이불여일타(이전 블로그: https://blog.naver.com/christer10)

0개의 댓글