이 문제는 9명의 난쟁이 중 합이 100이 되는 7명의 난쟁이를 찾아 오름차순으로 출력하는 문제이다.
9명 전체 난쟁이의 합에서 두 명을 골라 뺐을 때 합이 100이 되는 경우를 찾으면 된다.
#include<iostream> #include<algorithm> using namespace std; const int N = 9; int dwarf[9]; int sum = 0; int findDwarf() { for (int i = 0; i < N; i++) { for (int j = i + 1; j < N; j++) { if (sum - (dwarf[i] + dwarf[j]) == 100) { for (int k = 0; k < N; k++) { if (k == i || k == j) continue; cout << dwarf[k] << '\n'; } return 0; } } } } int main() { for (int i = 0; i < N; i++) { cin >> dwarf[i]; sum += dwarf[i]; } sort(dwarf, dwarf + 9); findDwarf(); return 0; }
처음 sum - (dwarf[i] + dwarf[j])==100일 때 dwarf[i]와 dwarf[j]를 빼고 출력한 후에 break; 를 했더니 결과는 나오는데 백준에서 자꾸 틀렸다고 떴다.
break를 하면 안쪽 루프만 빠져나오고 바깥 for문은 다시 돌기 때문에 return 0 을 해서 끝내줘야 한다.
이런 사소한 실수 하나가 다 실력이다 ㅠㅠ