[Algorithm][C++] BruteForce Algorithm 브루트포스 알고리즘, BOJ 4673 셀프 넘버

Madeline👩🏻‍💻·2023년 10월 31일
0

코테준비

목록 보기
7/7

😇

브루트포스 알고리즘이 뭐야?

  • 모든 경우의 수를 탐색하며, 요구 조건에 충족되는 결과만을 가져오는 것.
    그러니깐 다 직접 시도해보는 방식이다. 무식하지만 확실한 방법. 그리고 시간적인 측면에서 비효율적인 알고리즘.

1. 모든 조합 찾기

Q. 주어진 배열에서 3개의 숫자 조합을 찾는다고 가정해보자.


#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> arr = {1, 2, 3, 4, 5};
    int n = arr.size();
    //아마 위 배열은 크기가 주어지고 입력받는 형식이겠다.

	//아래처럼 모든 3개의 숫자 조합을 직접 찾는다.
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
                cout << arr[i] << ", " << arr[j] << ", " << arr[k] << endl;
            }
        }
    }

    return 0;
}

2. 최대값 찾기

Q. 주어진 배열에서 최대값을 찾는다.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> arr = {5, 3, 8, 1, 10};
    int maxValue = arr[0];

    for (int i = 1; i < arr.size(); i++) {
        if (arr[i] > maxValue) {
            maxValue = arr[i];
        }
    }

    cout << "최대값: " << maxValue << endl;
    return 0;
}

문제를 풀어보자

BOJ 4673: 셀프 넘버

로직은 아주 간단하다.
1부터 10,000까지의 숫자를 돌면서, 그 숫자가 "셀프넘버"인지 확인하고, 맞다면 출력하는 방식으로 구현했다.

//
//  main.cpp
//  4673
//
//  Created by Maddie on 2023/10/31.
//
/*
 d(n) = n + n각 자리수 -> 이게 안되는게 셀프 넘버
 */
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int selfNumber[10000];

int sumEachNumber(int n){//1234
    
    int sum = 0;
    while(n > 0){
        sum += n % 10;
        n/= 10;
    }
    return sum;
}

bool checkIsSelfNumber(int n){
    for(int i=0;i<n;i++){
        if(i + sumEachNumber(i) == n){
            return false;
        }
    }
    return true;
}
int main(){
    for(int i=1;i<10000;i++){
        if(checkIsSelfNumber(i)){
            cout << i << "\n";
        }
    }
    
    return 0;
}
profile
🍎 Apple Developer Academy@POSTECH 2기, 🍀 SeSAC iOS 4기

0개의 댓글