public static void main(String[] args) {

Scanner s = new Scanner(System.in);

        System.out.println("총 성냥개비 갯수 입력 : ");

        int n= s.nextInt(); // 입력받은 총 성냥개비 수

        s.close();

        int i; //삼각형의 가장 작은 변

        int j; //삼각형의 가장 큰 변

        int k; //삼각형의 나머지 변

        int cnt = 0; //삼각형 갯수

        

        if(n < 3){

        System.out.println("만들 수 있는 성냥개비 수는 0개 입니다.");

        }else{

        for (i = 1; i <= n/3; i++) {

        for(j = (n-i)/2; j < n-i; j++){ 

        k = n-i-j;

        if( j >= i && j >= k && j < i+k && k>=i ){ 

    cnt++;

    System.out.println("i : "+i+", j : "+j+", k : "+k);

        }else{

        continue;

        }

        }

}

        System.out.println("만들 수 있는 삼각형 수는 " + cnt +"입니다.");

        }

}


입력받은 성냥개비의 갯수를 모두 사용하여 만들 수 있는 서로 다른 삼격형 모양의 갯수를 구하는 문제입니다.


코드 자체는 단순하나 삼각형의 특징을 잘 알아야 만들 수 있는 알고리즘 입니다.


삼각형의 모양이 성립하려면 가장 작은변은 가장 큰 변보다 작거나 같아야 하고 나머지 한변 역시 가장 큰변보다 작거나 같아야 한다. 그리고 삼각형의 가장 큰 변은 나머지 두변의 합보다 항상 작아야 한다.


삼각형의 가장 작은변을 i, 가장 큰변을 j로 주고 i 와 j가 갖을 수 있는 값들을 반복문(for) 과 조건문(if)을 통하여 해결.


감사합니다.

'programming language > java' 카테고리의 다른 글

자바 재귀함수 Factorial (팩토리얼)  (0) 2016.08.25

+ Recent posts