[ 문제 ]
상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까?
두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 없으면, 두 직사각형은 다르다고 한다.
직사각형을 만들 때, 정사각형을 변형시키거나, 한 정사각형 위에 다른 정사각형을 놓을 수 없다.
또, 직사각형은 정사각형으로 꽉 차있어야 한다.
[ 입력 ]
- 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
[ 출력 ]
- 만들 수 있는 직사각형의 개수를 출력한다.
[ 예제 입력 ]
6
[ 예제 출력 ]
8
예를 들어 8개로 만들 수 있는 직사각형은
가로 길이 : 1, 세로 길이 : 8
가로 길이 : 2, 세로 길이 : 4
가로 길이 : 4, 세로 길이 : 2
가로 길이 : 8, 세로 길이 : 1
입니다.
하지만 문제에서 회전했을 때 같다면 한가지 경우로 친다고 했기 때문에
가로 길이 : 1, 세로 길이 : 8인 경우와 가로 길이 : 8, 세로 길이 : 1인 경우는 같은 경우입니다.
따라서 총 count에서 2로 나누어주었습니다.
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); // 가지고 있는 정사각형 개수
int count = 0;
for (int i = 1; i <= n; i++) {
if (i <= 3) count += 1; // 1개, 2개, 3개로 만들 수 있는 직사각형은 각각 1개
else {
int temp = 0;
for (int j = i; j > 0; j--)
if (i % j == 0) temp += 1;
count += (temp + 1) / 2;
}
}
System.out.println(count);
}
}
'Algorithm > 백준+프로그래머스+SWEA+정올+구름' 카테고리의 다른 글
[Algorithm] 백준 1260 DFS와 BFS (0) | 2021.08.24 |
---|---|
[Algorithm] 백준 2810 컵홀더 (0) | 2021.08.22 |
[Algorithm] 백준 2851 슈퍼 마리오 (0) | 2021.08.22 |
[Algorithm] 백준 1592 영식이와 친구들 (0) | 2021.08.22 |
[Algorithm] 백준 3052 나머지 (0) | 2021.08.22 |