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값보다 크다면 갱신해주면 된다.
'PS > 브루트포스 알고리즘[Bruteforce]' 카테고리의 다른 글
백준 16917 양념 반 후라이드 반(c++) (0) | 2023.01.22 |
---|---|
백준 2503 숫자 야구(c++) (0) | 2022.10.19 |
백준 2303 숫자 게임(c++) (0) | 2022.10.15 |
백준 2003 수들의 합2(c++) (0) | 2022.10.14 |
백준 2851 슈퍼 마리오(c++) (1) | 2022.10.12 |