https://www.acmicpc.net/problem/1526
문제
> 금민수는 4와 7로만 이루어진 어떤 수를 말한다.
> N이 주어졌을때 N보다 작거나 같은 금민수 중 가장 큰 것을 출력해라.
접근
7과 4로만 수를 만들 수 있으므로 입력받은 수보다 작은수 중 올 수 있는 가장 큰 경우를 찾아 출력한다.
문제해결
> 들어온 수를 4보다 크거나 같은 값까지 1씩 감소하며 반복한다.
> 반복하때 각자리수를 4와 7 비교해 둘 다 아닌 수면
다음 수로 넘어간다.
> 둘 중에 한개의 수 라면 해당 값을 출력하고 종료한다.
코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N;
for (int i = N; i >= 4; i--)
{
bool result = true;
string s = to_string(i);
for (char c : s)
{
if (c != '4' && c != '7')
result = false;
}
if (result)
{
cout << i;
break;
}
}
return 0;
}

후기
들어온 수 보다 작은 수를 7과 4로 조합해서 만들려고 했지 감소시키며 완전탐색할 생각은 수가 커지면 런타임에러가 날 줄 알았는데 완전탐색으로 해결이 되었다..