Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Bruteforce
- 백준 인구 이동
- boj 연구소3
- 브루트포스
- 시뮬레이션
- 백준 게리맨더링 2
- boj 16234
- 구현
- 백준2174
- 삼성 문제
- 로봇 시뮬레이션
- BOJ 17142
- dfs
- 백준 3190
- 알고리즘
- C
- 백준 17779
- boj 15685
- 백준 연구소3
- 연구소3
- C++
- 헷갈리는 용어
- 완전탐색
- 백준 로봇 시뮬레이션
- boj 3190
- BOJ
- 백준 16234
- 백준 뱀
- simulation
- 삼성문제
Archives
- Today
- Total
나의 공부장
백준 2309 일곱 난쟁이 [BruteForce] 본문
문제 링크: https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
문제 풀이
9명의 난쟁이 중에서 2명이 공주에게 거짓말하고 있습니다.
2명을 찾는 방법은 9명의 난쟁이들의 키를 모두 더한 값에서 2명씩 빼면서 그 결과가 100이 되는 경우를 찾으면 됩니다.
[9명의 난쟁이들의 키의 합] - [거짓 난쟁이 후보 1] - [거짓 난쟁이 후보 2] = 100
소스 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//freopen("input.txt", "r", stdin);
vector<int> v(9, 0);
int total = 0;
for (int i = 0; i < 9; i++)
{
cin >> v[i];
total += v[i];
}
bool find = false;
int idx1, idx2;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
if (i != j)
{
if (total - v[i] - v[j] == 100)
{
find = true;
idx1 = i;
idx2 = j;
break;
}
}
}
if (find) break;
}
vector<int> ans;
for (int i = 0; i < 9; i++)
{
if (v[i] != v[idx1] && v[i] != v[idx2])
ans.push_back(v[i]);
}
sort(ans.begin(), ans.end());
for (int i = 0; i < ans.size(); i++)
cout << ans[i] << '\n';
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1182 부분 수열의 합 [BruteForce] (0) | 2020.04.26 |
---|---|
백준 1018 체스판 다시 칠하기 [BruteForce] (0) | 2020.04.26 |
백준 10448 유레카 이론 [BruteForce] (0) | 2020.04.24 |
백준 2493 탑 [Stack] (0) | 2020.04.18 |
백준 1743 음식물 피하기 [DFS] (0) | 2020.04.06 |