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 |
---|