https://www.acmicpc.net/problem/1527
[풀이]
- 기본적으로 반복문을 하면, 메모리 초과가 발생합니다.
- 그렇기에 저는 재귀적인 방법을 이용해서 문제를 접근했습니다.
- 4와 7이 있는 숫자는 4와 7에 10을 곱한후 각 숫자를 더한 값을 확인해야 합니다.
- 입력 숫자가 범위가 크기에 long형으로 선언했습니다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static long x, y, answer;
public static void solve(long number) {
if (number > y)
return;
if (number >= x)
answer += 1;
solve(number * 10 + 4);
solve(number * 10 + 7);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
solve(4);
solve(7);
System.out.println(answer);
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 16943번 : 숫자 재배치(Java) (0) | 2021.09.21 |
---|---|
백준 10798번 : 세로읽기(Java) (0) | 2021.09.21 |
백준 18290번 : NM과 K (1)(Java) (0) | 2021.09.20 |
백준 16938번 : 캠프 준비(Java) (0) | 2021.09.20 |
백준 5347번 : LCM(Java) (0) | 2021.09.20 |