공부하기/백준

[Java] 백준 풀기 1526 - 가장 큰 금민수

XEV 2023. 9. 20. 22:41

자바 백준 1526번

브론즈 1

https://www.acmicpc.net/problem/1526

 

1526번: 가장 큰 금민수

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 브루트포스 알고리즘

 

 

 

 

 

문제 풀기

주어진 숫자 N부터 시작하여 하나씩 감소시켜 가며 금민수인지 확인한다.

금민수 확인은 1의 자릿수가 4 또는 7인지 확인하여 맞다면 10으로 나눈 몫, 나머지 관계로 다음 자릿수를 확인하고 반복한다.

함수 안의 결과에 따라 true, false를 반환하여 결과를 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 입력값 N
        int N = sc.nextInt();
        
        // N부터 시작해서 가장 큰 금민수를 찾을 때까지 반복
        while (true) {
            // isGMNumber 함수를 사용하여 금민수인지 확인
            if (isGMNumber(N)) {
                // 찾은 금민수를 출력하고 반복문을 종료
                System.out.println(N);
                break;
            }
            // N을 감소시켜 다음 수를 확인
            N--;
        }
    }
    
    // 주어진 수가 금민수인지 확인하는 함수
    public static boolean isGMNumber(int num) {
        // 주어진 수를 자릿수별로 확인
        while (num > 0) {
            int digit = num % 10;
            // 자릿수가 4 또는 7이 아니면 금민수가 아님
            if (digit != 4 && digit != 7) {
                return false;
            }
            // 다음 자릿수를 확인하기 위해 나누기 연산을 수행
            num /= 10;
        }
        // 모든 자릿수가 4 또는 7이면 금민수
        return true;
    }
    
}