문제 분석
- 규칙을 찾으면 풀 수 있다.
문제 풀이
1) 높이가 1부터 제곱해서 n이 되는 수까지 경우의 수를 구한다.
2) 각 높이가 정해졌을 때 가로의 길이를 해당 높이부터 n까지 계산해본다(cf. n까지 가다가 제곱한 수가 n을 넘으면 더이상 계산할 필요가 없다)
예시)
16일 때,
높이가 1 : 1, 2, 3, 4, 5, ... ,15,16
높이가 2 : 2, 3, 4, 5, 6, 7, 8
높이가 3 : 3, 4, 5
높이가 4 : 4
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
private static int n, ans;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
recursive(1);
System.out.println(ans);
}// main
private static void recursive(int c) {
if (n / c < c) {
if (n / c == c)
ans++;
return;
}
for (int i = c; i <= n; i++) {
if (c * i <= n)
ans++;
else
break;
}
recursive(c + 1);
}
}// class-end
'Algorithm > BOJ' 카테고리의 다른 글
BOJ 2309 일곱난쟁이 (0) | 2021.03.05 |
---|---|
BOJ 2810 컵홀더 (0) | 2021.03.04 |
BOJ 2851 슈퍼마리오 (0) | 2021.03.04 |
BOJ 1592 영식이와친구들 (0) | 2021.03.04 |
BOJ 8958 OX퀴즈 (0) | 2021.03.04 |