๐ ์ ์ถ ์ฝ๋
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n= sc.nextInt();
System.out.println((n*(n-1))/2);
System.out.println(2);
}
}
โ ํ์ด ๊ณผ์
๋จผ์ ๋ฌธ์ ์์ ์ฃผ์ด์ง ์์ฌ์ฝ๋๋ฅผ ์๋ฐ ์ฝ๋๋ก ๋ณํํ์๋ค.
MenOfPassion(A[]) {
int sum = 0;
int n = A.length;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
sum += A[i] * A[j];
}
}
return sum;
}
์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ด A๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฐฐ์ด์ ํน์ ์์ ๊ณฑ์ ํฉ์ฐํ์ฌ ๋ฐํํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์๊ฐ ๋ณต์ก๋ ๋ถ์
- int sum :
- ๋์ ์ฐ์ฐ์ผ๋ก ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- int n = A.length :
- ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- for (int i = 0; i < n -1; i++) :
- ์ด ๋ฐ๋ณต๋ฌธ์ i๊ฐ 0๋ถํฐ ์์ํ์ฌ n - 1 ๋ณด๋ค ์์๋ ๊น์ง ๋ฐ๋ณตํ๋ค. ๋ฐ๋ผ์ n - 1 ๋ฒ ๋ฐ๋ณตํ๋ค.
- ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฉฐ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก $O(n-1)$์ผ๋ก ํํํ ์ ์๋ค. ํ์ง๋ง ์์ํญ์ ๋ฌด์ํ๋ฏ๋ก
- $O(n)$ ์ผ๋ก ํํํ๋ค.
- for (int j = i + 1; j < n; j++) :
- ์ด ๋ฐ๋ณต๋ฌธ์ ๋ด๋ถ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐ๋ณต ํ์๊ฐ `i` ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ ๊ฐ `i`์ ๋ํด ๋ฐ๋ณต๋ฌธ `j`๋ $ n - i - 1$ ๋ฒ ์คํ๋๋ค.
์ด ์คํ ํ์
- ์ธ๋ถ ๋ฐ๋ณต๋ฌธ์ด `i` ์ ๋ํด n-1๋ฒ ๋ฐ๋ณต๋๊ณ , ๋ด๋ถ ๋ฐ๋ณต๋ฌธ์ ๊ฐ i์ ๋ํด `n - i - 1`๋ฒ ์คํ๋๋ค.
- ์ ์ฒด ์คํ ํ์๋ ๋ ๋ฐ๋ณต๋ฌธ์ด ๊ฒฐํฉ๋ ํ์๋ฅผ ๊ณ์ฐํ ๊ฒ์ด๋ค.
์ด ์คํ ํ์ $T(n)$ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ ์ ์๋ค.
์ด๋ฅผ ์ ๊ฐํ๋ฉด
์ด๋ ๋ฑ์ฐจ์์ด์ ํฉ๊ณผ ๊ฐ์ผ๋ฉฐ, ์ด ์คํ ํ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์์์ ๋จ์ํํ๋ฉด $\frac{(n^2-n)}{2}$ ์ผ๋ก ํํํ ์ ์์ผ๋ฉฐ ๋น ์ค ํ๊ธฐ๋ฒ์์ ์์์ ๋ฎ์ ์ฐจ์ ํญ์ ๋ฌด์ํ๊ณ ๊ฐ์ฅ ํฐ ์ฐจ์์ ํญ๋ง๊ณ ๋ คํ๋ฏ๋ก $T(n) = O(n^2)$ ์ผ๋ก ํํํ ์ ์๋ค.