728x90

 

 

문제 29. (2021-05-29)

 

 

삼각화단 만들기 (Small)

주어진 화단 둘레의 길이를 이용하여 삼각형 모양의 화단을 만들려고 한다. 이 때 만들어진 삼각형 화단 둘레의 길이는 반드시 주어진 화단 둘레의 길이와 같아야 한다. 또한, 화단 둘레의 길이

codeup.kr

2625(Codeup). 삼각화단 만들기 (Small)

주어진 화단 둘레의 길이를 이용하여 삼각형 모양의 화단을 만들려고 한다. 이 때 만들어진 삼각형 화단 둘레의 길이는 반드시 주어진 화단 둘레의 길이와 같아야 한다. 또한, 화단 둘레의 길이와 각 변의 길이는 자연수이다.

예를 들어, 만들고자 하는 화단 둘레의 길이가 9m라고 하면

 

한 변의 길이가 1m, 두 변의 길이가 4m인 화단,

한 변의 길이가 2m, 다른 변의 길이가 3m, 나머지 변의 길이가 4m인 화단,

세 변의 길이가 모두 3m인 3가지 경우의 화단을 만들 수 있다.

 

화단 둘레의 길이를 입력받아서 만들 수 있는 서로 다른 화단의 수를 구하는 프로그램을 작성하시오. 두 뭉치가 있습니다. 왼쪽 뭉치에서 카드를 하나 뽑고 오른쪽 뭉치에서 카드를 하나 뽑아서, 나온 두 수의 곱 중 가장 큰 값을 구하시오.

 

 

입력

화단의 길이가 주어진다.(단, 3 <= n <= 100)

 

출력

n으로 만들 수 있는 서로 다른 화단의 수를 출력한다.

 

❧ 테스트 셋

9

 


❧ 출력 예시

3

 


❧ 정답

round = int(input())
count = 0
long_side = round // 2
for i in range(long_side, 0, -1):
  if i < (round - i)//2:
    break
  if i < (round - i):
    for j in range(1, (round - i)//2):
      print(j)
      side_1 = j
      side_2 = (round - i - side_1)
      if (i >= side_1) and (i >= side_2):
        count += 1
print(count)

 

1️⃣ 나올 수 있는 가장 긴 변의 길이(삼각형 둘레 // 2)에서 부터 1씩 감소하며 반복 진행

└ 삼각형 성립 조건이 "(가장 긴 변) < (나머지 두 변의 합)" 이므로

2️⃣ 가장 긴 변이 나머지 "두 변을 2로 나눈 값"보다 작으면 반복 종료

3️⃣ side_1 을 1에서 시작하여 side_2와 같을 때 까지 삼각형 쌍 탐색 진행

메모리 시간 언어 길이
27724 KB 16 MS Python 328 B

 

728x90

 

728x90