반응형
문제
풀이
이 문제를 풀기 위해 브루트포스(Brute-force Search)를 사용했다.
브루트포스는 '무식한 힘'이라는 뜻으로, 완전 탐색 알고리즘을 이용한다.
즉, 모든 경우의 수를 파악해 답을 도출하는 방식이다.
아래처럼 삼중 for문을 이용해 결과를 도출했다.
for (int i = 0; i < N - 2; i++) {
for (int j = i + 1; j < N - 1; j++) {
for (int k = j + 1; k < N; k++) {
sum = arr[i] + arr[j] + arr[k];
if (max < sum && sum <= M) {
max = sum;
}
}
}
}
추가로, '이것이 C++이다'라는 책을 통해 문법을 공부 중인데, 아래와 같은 코드가 C++의 특징을 살린 코드라고 하여 앞으로는 이렇게 짜보려고 한다.
int a = 10; // C 문법 형식의 코드
int b = a;
int a(10); // C++ 특징을 살린 코드
int b(a);
코드
#include <iostream>
using namespace std;
int main() {
int N, M, sum(-1), max(-1);
int arr[101];
cin >> N >> M;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
for (int i = 0; i < N - 2; i++) {
for (int j = i + 1; j < N - 1; j++) {
for (int k = j + 1; k < N; k++) {
sum = arr[i] + arr[j] + arr[k];
if (max < sum && sum <= M) {
max = sum;
}
}
}
}
cout << max;
return 0;
}
결과
반응형
'Programming > C++ - 백준' 카테고리의 다른 글
[백준] 10845번 : 큐 (C++) (0) | 2024.03.11 |
---|---|
[백준] 10828번 : 스택 (C++) (0) | 2024.03.11 |
[백준] 2869번 : 달팽이는 올라가고 싶다 (C++) (0) | 2024.03.07 |
[백준] 5597번 : 과제 안 내신 분..? (C++) (0) | 2024.03.05 |
[백준] 7568번 : 덩치 (C++) + pair 클래스 (0) | 2024.03.03 |
댓글