본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[boj] 백준 1527 금민수의 개수 - 재귀&브루트포스

[문제]

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

 

1527번: 금민수의 개수

첫째 줄에 A와 B가 주어진다. A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

[풀이]

범위 내에 존재하는 4와 7로만 이루어진 숫자를 재귀로 전부 탐색한다.

 

[코드]

 

// Created by strit on 2022-02-16. silver1 1527 금민수의 개수 - 브루트 포스 & 재귀
#include <iostream>
#include <vector>
#include <algorithm>

using namespace::std;

long long a, b;
int cnt;

void solve(long long num){
    if(num > b)
        return;
    else if(a <= num && num <= b){
        cnt++;
    }
    solve(num * 10 + 4);
    solve(num * 10 + 7);
}

int main() {
    //금민수 - 4와 7로만 이루어진 수
    //a이상 b이하의 수 중 금민수의 개수를 구해라.
    cin >> a >> b;

    solve(4);
    solve(7);

    cout << cnt;
}