728x90
문제설명

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

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

 

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

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

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

화단 둘레의 길이를 입력받아서 만들 수 있는 서로 다른 화단의 수를 구하는 프로그램을 작성하시오.

 

 

입력

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

 

 

출력

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

 

 

입력예시

9

 

출력예시

3

 

 


#include <stdio.h>
int main(void){
    int n,count=0;
    scanf("%d", &n);
    for(int i=1;i<n;i++){
        for(int j=i;j<n;j++){
            for(int k=j;k<n;k++){
                if(i<=j&&i+j>k&&i+j+k==n){
                    count+=1;
                }
            }
        }
    }
    printf("%d", count);
}

형태를 만들고 조금 고민을 하였다. 3개의 변이니 for문 3중으로 되어야 하는 것을 이해하였기 때문이다. 근데 if문을 잘못 만들었었다. 어떤 문제였냐면 조건이 적었다는 것이다. 삼각형의 성질을 집어 넣지 않았다. 단지 세변을 더한 값이 설정값과 같아야지만 생각을 하였다. 여기서 내가 놓친 것은 i값이 j값 보다 작거나 같아야 한다는 것, 그리고 i+j값이 k 값보다 작아야 한다는 것이다. 이것은 삼각형의 성질에 나올 것이다. 이것을 &&로 묶어준다. 이 조건이 만족하게 되면 count를 해주면 되고 이를 for문을 마무리 한 뒤에 count 값을 출력을 해주면 될 것이다.

728x90

+ Recent posts