https://www.acmicpc.net/problem/2622
같은 길이의 성냥개비가 여러 개 주어져 있다. 이것들을 평면에 늘어놓아서 삼각형을 만들려고 한다. 삼각형의 한 변은 여러 개의 성냥개비를 직선으로 이어서 만들 수 있지만, 성냥개비를 꺾거나 잘라서 변의 한 부분을 만들 수는 없다. 성냥개비의 개수가 주어졌을 때, 이들 성냥개비를 사용하여 만들 수 있든 서로 다른 삼각형의 개수를 구하는 프로그램을 작성하시오.
예를 들어서 9개의 성냥개비로 만들 수 있는 서로 다른 삼각형은 그림 1과 같이 3가지이다.
<주의사항>
첫째 줄에 성냥개비의 개수가 주어진다. 성냥개비의 개수는 1 이상 50,000 이하이다.
첫째 줄에 만들 수 있는 삼각형의 개수를 출력한다.
import java.util.Scanner;
// 자연수의 분할 P(N,3)
// 각 변의 길이를 a, b, c라 하고 a<b<c 일때, a+b>c 가 성립해야 삼각형이 만들어진다.
// a, b가 정해지면 c는 자동으로 정해진다.
//9=1+4+4=2+3+4=3+3+3
//8=2+3+3
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int cnt=0;
for(int a=1;a<=N/3;a++) {
for(int b=a;b<=(N-a)/2;b++) {
int c=N-a-b;
if(b>c) break;
if(c<a+b) {
cnt++;
}
}
}
System.out.println(cnt);
}
}
삼각형을 만드는 기본 조건을 활용한 코드이다.
Scanner
를 사용하였다.b<=(N-a)/2
로 조건을 걸어주었다. b가 가장 커지는 경우가 위의 조건이기 때문이다.