문제
상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까?
두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 없으면, 두 직사각형은 다르다고 한다. 직사각형을 만들 때, 정사각형을 변형시키거나, 한 정사각형 위에 다른 정사각형을 놓을 수 없다. 또, 직사각형은 정사각형으로 꽉 차있어야 한다.
코드
n = int(input())
# cnt = 직사각형의 개수
cnt = 0
for i in range(1,n+1):
for j in range(i, n+1):
if i*j <= n:
cnt+=1
print(cnt)
NOTE
처음엔 규칙이 뭘까 고민하다 소인수 분해를 한뒤 두그룹으로 나눠 나올 수 있는 경우의 수를 구한 뒤 수를 더하는 방식으로 구현했다.
구현을 한 뒤 읭 브론즈인데..? 이런 생각이 들어 다른 블로그를 찾아보니 아주간단한... 그냥 n*m을 했을 때 블록 개수보다 적으면 된다는 것을 알았다.
이렇게 쉬운 방법이.
8320번: 직사각형을 만드는 방법
상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까? 두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수
www.acmicpc.net
'CodingTest' 카테고리의 다른 글
[PROGRAMERS / JavaScript] 가장 큰 수 (0) | 2025.02.10 |
---|---|
[BOJ / JavaScript]1697 숨바꼭질 (0) | 2025.02.05 |
[BOJ / Python] 1181 단어 정렬 - ord(), chr() (1) | 2024.01.14 |
[BOJ / Python] 1181 단어 정렬 (0) | 2023.12.22 |
[BOJ / Python] 5622 다이얼 (1) | 2023.12.22 |