문제출처: 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 |