[Java] 백준 1527 (금민수의 개수) 자바 문제 풀이

2024. 4. 15. 12:47·BOJ, Programmers

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

 

1527번: 금민수의 개수

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

www.acmicpc.net

 

알고리즘 분류

  • 브루트포스 알고리즘

 

풀이

처음엔 완전탐색으로 하나씩 String으로 변환 후 체크했다.

하지만 메모리 초과가 발생하였고, 재귀 호출을 사용해 문제에 접근했다. 

 

핵심 로직이다. 

매개변수로 받은 n을 

어차피 한자리씩 늘어나니 10을 곱하고 7, 4를 더했다. ( 7 -> 77 or  74 )

왜냐하면 7와 4만 필요할 뿐 나머지는 필요가 없기 때문이다.

재귀호출을 빠져나오는 조건문은 b보다 크면 빠져나오도록 설정했다. 

public static void calculate(long n){
        if(n > b) return;
        if(a <= n){cnt ++;}

        long x = n * 10 + 7;
        long y = n * 10 + 4;
        calculate(x);
        calculate(y);

    }

 

 

 

아래는 전체 정답 코드이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int a, b, cnt;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        a = Integer.parseInt(st.nextToken());
        b = Integer.parseInt(st.nextToken());

        calculate(7);
        calculate(4);

        System.out.println(cnt);

    }
    public static void calculate(long n){
        if(n > b) return;
        if(a <= n) cnt ++;

        long x = n * 10 + 7;
        long y = n * 10 + 4;
        calculate(x);
        calculate(y);

    }
}

'BOJ, Programmers' 카테고리의 다른 글

[Java] 백준 14501 (퇴사) 자바 문제풀이  (0) 2024.04.25
[Java] 백준 2535 (아시아 정보올림피아드) 자바 문제 풀이  (1) 2024.04.18
[Java] 백준 2075 (N번째 큰 수) 자바 문제 풀이  (1) 2024.04.15
[Java] 백준 1312 번 (소수) 문제 풀이  (0) 2024.04.10
[Java] 백준 1543번 (문서 검색) 자바 문제 풀이  (0) 2024.04.08
'BOJ, Programmers' 카테고리의 다른 글
  • [Java] 백준 14501 (퇴사) 자바 문제풀이
  • [Java] 백준 2535 (아시아 정보올림피아드) 자바 문제 풀이
  • [Java] 백준 2075 (N번째 큰 수) 자바 문제 풀이
  • [Java] 백준 1312 번 (소수) 문제 풀이
Economy98
Economy98
공부하고 기록하기
  • Economy98
    Economy_Dev
    Economy98
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Spring Framework (11)
      • BOJ, Programmers (22)
      • Java (4)
      • JDBC (6)
      • JPA (9)
      • Spring Transaction (3)
      • Algorithm (1)
      • Web (5)
      • Projects (2)
        • 쇼핑몰 프로젝트 (0)
        • 열람실 & 도서관 프로젝트 (2)
      • Network (2)
      • 나의 공부방 (5)
      • 끄적끄적 (1)
      • Error Log (3)
      • CS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    그리디 알고리즘
    브루트포스 알고리즘
    트랜잭션
    백준 풀이
    예외 처리
    스프링부트
    백준
    java
    propagation
    JPA
    다이나믹 프로그래밍
    자바 문제 풀이
    백준 자바 풀이
    jdbc
    자바
    정렬
    Spring
    스프링
    restful api
    자바 문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Economy98
[Java] 백준 1527 (금민수의 개수) 자바 문제 풀이
상단으로

티스토리툴바