백준 1527번: 금민수의 개수

최창효·2023년 1월 17일
0
post-thumbnail
post-custom-banner

문제 설명

접근법

  • 재귀방식으로 문제를 풀 수 있다는 걸 생각해내는게 문제의 핵심입니다.
    A,B의 범위가 크기 때문에 O(N)으로는 문제를 풀 수 없습니다.
    문자열로 값을 만들어가는 것보다는 숫자로 값을 만들어가는게 훨씬 효율적입니다.

정답


import java.util.*;
import java.io.*;

public class Main {
	static int answer = 0;
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt();
		int B = sc.nextInt();
		recursion(0,A,B);
		System.out.println(answer);
	}
	
	public static void recursion(long num, int A, int B) {
		if(num >1_000_000_000L) return;
		
		if(A <= num  && num <= B) answer++;
		recursion(10*num+4,A,B);
		recursion(10*num+7,A,B);
		
	}
}

profile
기록하고 정리하는 걸 좋아하는 개발자.
post-custom-banner

0개의 댓글