2023-10-10-동국대SW역량강화캠프-2951. 삼각화단 만들기(S)
문제
주어진 화단 둘레의 길이를 이용하여 삼각형 모양의 화단을 만들려고 한다. 이 때 만들어진 삼각형 화단 둘레의 길이는 반드시 주어진 화단 둘레의 길이와 같아야 한 다. 또한, 화단 둘레의 길이와 각 변의 길이는 자연수이다. 예를 들어, 만들고자 하는 화단 둘레의 길이가 9m라고 하면,
• 한 변의 길이가 1m, 두 변의 길이가 4m인 화단
• 한 변의 길이가 2m, 다른 변의 길이가 3m, 나머지 변의 길이가 4m인 화단 • 세 변의 길이가 모두 3m인 3가지 경우의 화단을 만들 수 있다.
화단 둘레의 길이를 입력받아서 만들 수 있는 서로 다른 화단의 수를 구하는 프로 그램을 작성하시오.
입력
화단의 길이 n이 주어진다.(단, 1 <= n <= 100)
출력
출력내용은 입력받은 n으로 만들 수 있는 서로 다른 화단의 수를 출력한다.
예제 1 입력
9
예제 1 출력
3
Source (O(N^3))
n = int(input())
count = 0
for i in range(1, n):
for j in range(i, n):
for k in range(j, n):
if((i + j + k) == n and k < i + j):
count += 1
print(count)
Source (O(N^2))
n = int(input())
count = 0
for i in range(1, n):
for j in range(i, n):
k = n - i - j
if(k < i + j and k >= j):
count += 1
print(count)
Source (O(N))
n = int(input())
count = 0
for i in range(1, n):
count += max(0, int((n-i)/2) - max(i, int(n/2) - i + 1) + 1)
print(count)
O(N)에 대한 풀이가 왜 저렇게 나왔는지는 좀 더 고민해보도록 하자 😢