문제출처: https://www.acmicpc.net/problem/1526


문제

은민이는 4와 7을 좋아하고, 나머지 숫자는 싫어한다. 금민수는 어떤 수가 4와 7로만 이루어진 수를 말한다.

N이 주어졌을 때, N보다 작거나 같은 금민수 중 가장 큰 것을 출력하는 프로그램을 작성하시오.


입력

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


출력

첫째 줄에 N보다 작거나 같은 금민수 중 가장 큰 것을 출력한다.


풀이

정답률이 50퍼대라서 괜히 어려운문제같아서 고민했지만 결국 기본에 충실하면 5분컷인 문제입니다. (해보지도 않고 겁부터먹는..)

수가 4또는7의 구성으로 이루어진 수 중 범위내에서 가장 큰 값을 구하는 문제이므로 최대범위값부터 하나씩 줄여가며 

수%10 ==7 or 수%10==4 인 금민수를 구하면됩니다...


코드

#include<iostream>
using namespace std;
bool func(int n);
int main()
{
	int n;
	cin >> n;
	int ans;
	for (int i = n; i >= 4; i--)
	{
		//만약 각 자릿수가 4또는 7이면
		//그때의 i값 저장하고 출력
		if (func(i))
		{
			ans = i;
			break;
		}
	}
	cout << ans << endl;
}
bool func(int n)
{
	while (n)
	{
		//각 자릿수가 4또는7의구성이면 계속진행
		if (n % 10 == 4 || n % 10 == 7)
			n /= 10;
		//false값리턴
		else
			return false;
	}
	return true;
}


결과

'문제풀이(BOJ) > 시뮬레이션(구현)' 카테고리의 다른 글

[백준 12759] 틱!택!토!  (0) 2020.01.08
[백준 2578] 빙고  (0) 2020.01.06
[백준 2303] 숫자 게임  (0) 2020.01.03
[백준 10163] 색종이  (0) 2020.01.03
[백준 12760] 최후의 승자는 누구?  (0) 2020.01.03

+ Recent posts