(C++) 백준 1526번 - 가장 큰 금민수

코딩너구리·2025년 10월 1일

코딩 문제 풀이

목록 보기
9/266

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로 조합해서 만들려고 했지 감소시키며 완전탐색할 생각은 수가 커지면 런타임에러가 날 줄 알았는데 완전탐색으로 해결이 되었다..

0개의 댓글