-
백준 2309 - 일곱난쟁이백준 algorithm 2020. 5. 16. 00:56반응형
=> Brute Force 문제이다.
=> 모든 경우의 수를 탐색해보면 알 수 있다.
알고리즘은 아래와 같다.
-
배열을 입력받으며, 전체 난쟁이(9명)들 키의 합을 구한다.(sum)
-
배열을 sort 시킨다.
-
STL을 써도 무방한다. ( 이 경우, 배열의 크기 또한 정해져 있다.)
-
해당 배열을 i가 index 0부터 9까지 탐색한다, j는 i+1부터 9까지 탐색한다.
-
i, j index 값을 sum에서 뺏을 때, 100이 되는 i와 j를 구한다.
=> 위의 방법을 통해 제외되는 두 명의 난쟁이를 구할 수 있다.
*** 본인은 원하는 난쟁이를 구한 경우, 프로그램을 끝내지 않고, 모든 경우의 수를 탐색하도록 하여 여러 번 틀렸었다.
*** 원하는 i와 j를 찾았을 경우, 프로그램을 중지시켜주는 것이 정답을 맞혀주는 길이며, 효율성을 올릴 수 있는 방법이다.
<code>
#include <iostream> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int arr[9]; int sum=0; for(int i=0; i<9; i++) { cin >> arr[i]; sum += arr[i]; } sort(arr, arr+9); for(int i=0; i<9; i++) { for(int j= i+1; j<9; j++) { if(sum - arr[i] - arr[j] == 100) { for(int k=0; k<9; k++) { if(k !=i && k != j) { cout << arr[k]<<'\n';; } } return 0; } } } return 0; }
반응형'백준 algorithm' 카테고리의 다른 글
백준 1476 - 날짜 계산 (0) 2020.06.01 백준 3085 - 사탕 게임 (0) 2020.05.31 백준 11053 - 가장 긴 증가하는 부분 수열 (0) 2020.05.09 백준 2193 - 이친수 (0) 2020.04.23 백준 15990 - 1, 2, 3 더하기 5 (0) 2020.04.23 -