BOJ 1526

2020-05-17

위 문제는 백준 사이트의 알고리즘 1526 문제에 관한 설명입니다.


문제

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

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

입력

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

출력

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

import java.util.Scanner;

class BiggestMinsu
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();//숫자 입력
        for(int i = N;i>=4;i--)//N부터 시작해서 최소값인 4까지 왜? 4미만은 어차피 금민수가 아님
        {
            boolean flag = true;
            int num = i;
            while(num!=0){//각 자릿수별로 판별할 것 이기에 0이면 종료하게 설정
                if(num%10 == 4 || num %10 ==7)//자릿수가 4나 7이면 10으로 나눠서 다음자릿수 확인
                    num/=10;
                else{
                    flag =false;//자릿수가 4나 7이 아니면  금민수가 아니기에 flag를 false로함
                    break;
                }
            }
            if(flag)//flag가 false라면 출력이 안되고 true라면 4나 7로만 이루어진 숫자이기에 출력
            {
                System.out.println(i);
                break;
            }
        }
        scanner.close();
    }
}

설명은 주석 참고!

가장 큰 금민수