문제 해석
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
long n = Long.parseLong(br.readLine());
int count = 0;
for(int i = 1; i <= n-2; i++){
for(int j = i+1; j <= n-1; j++){
for(int k = j+1; k <= n; k++){
count++;
}
}
}
br.close();
bw.write(count+"\n" + 3);
bw.flush();
bw.close();
}
}
n이 7이라고 가정했을 때,
i는 1부터 5까지 반복,
j는 i+1 부터 6까지 반복,
k는 j+1 부터 7까지 반복,
1 부터 n까지의 숫자중 3가지(i, j, k에서 하나씩 뽑는거라 볼 수 있음)를 뽑아 중복 없이, 크기 순으로 작성하는 경우의 수가 수행 횟수이다.
즉, 이 공식은 고등과정 학률과 통계-조합부분에 해당되는데,
이 공식을 사용하면,
즉 수행 횟수는 35이고, 공식을 정리하면, 아래와 같다.
시간 복잡도는 O(n X (n-1) X (n-2)/6)의 최고차항 차수인 3이 된다.
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
long n = Long.parseLong(br.readLine());
br.close();
bw.write((n*(n-1)*(n-2)/6)+"\n" + 3);
bw.flush();
bw.close();
}
}
결과
느낀점
안녕하세요! 블로그 글 잘 보고있습니다. 질문입니다만 공식유도과정 마지막에 7 x 6 x 5 / 6 에서 분자와 분모의 6을 생략하지 않는 이유는 무엇인가요?