PS/브루트포스 알고리즘[Bruteforce]

백준 1526 가장 큰 금민수(c++)

SeungbeomKim 2022. 10. 19. 16:16
반응형

https://www.acmicpc.net/problem/1526

 

1526번: 가장 큰 금민수

첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

<코드>

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    string str;

    cin>>str;

    int max = -1;
    for(int i=4;i<=stoi(str);i++)
    {
        int cnt=0;
        string temp = "";
        temp += to_string(i);
        for(int j=0;j<temp.size();j++)
        {
            if(temp[j]=='4' || temp[j]=='7')
            {
                cnt++;
            }

            if(cnt == temp.size())
            {
                if(stoi(temp)>max) max = stoi(temp);
            }
        }
        
    }
    cout<<max<<'\n';
}

<풀이 과정>

이 문제는 문자열 ->숫자, 숫자-> 문자열간 변환이 중요하다.

금민수는 4, 7만으로 이루어진 수이다. 주어진 값보다 작은 값들중에서 4, 7로만 주어진 값을 찾기 위해서는

숫자를 문자열로 변환해서 하나씩 비교해주는 과정이 필요하다.

ex) 74 ==> 7은 첫번째 인덱스의 값, 4는 첫번째 인덱스의 값

완전탐색으로 하나씩 비교해보고, 4,7로만 이루어진 값이 있을 때, 그 값이 max값보다 크다면 갱신해주면 된다.

반응형