
-Code
import java.io.*;
import java.util.*;
public class BOJ31217 {
static int MOD = 1000000007;
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
// 노트 초기화
ArrayList<ArrayList<Integer>> nodes = new ArrayList<>();
for (int i = 0; i <= n; i++) {
nodes.add(new ArrayList<Integer>());
}
// 간선 받기
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
nodes.get(u).add(v);
nodes.get(v).add(u);
}
// 탐색
long answer = 0;
for (int i = 1; i <= n; i++) {
long cnt = nodes.get(i).size();
answer += (cnt * (cnt - 1) * (cnt - 2) / 6) % MOD;
}
System.out.println(answer % MOD);
br.close();
}
}
처음에 그래프 문제라 어렵게 백트랙킹을 사용하려 했으나 로직 문제와 시간 초과 문제가 생겨서 힌트를 찾아보니 조합을 활용하는 문제라 해당 수식으로 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 35277번 유림이와 하람이의 두쫀쿠 대작전 (0) | 2026.03.04 |
|---|---|
| [백준/Java] 11501번 주식 (0) | 2026.03.03 |
| [백준/Java] 20006번 랭킹전 대기열 (0) | 2026.03.02 |
| [백준/Java] 31066번 비 오는 날 (0) | 2026.03.02 |
| [백준/Java] 3758번 KCPC (0) | 2026.03.01 |