-
728x90
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 백준_멀티버스1 { static int M, N, answer; static int ssafy[][], numbers[], planets[]; static boolean notSame; public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(bf.readLine()); M = Integer.parseInt(st.nextToken()); N = Integer.parseInt(st.nextToken()); ssafy = new int[M][N]; for (int i = 0; i < M; i++) { st = new StringTokenizer(bf.readLine()); for (int j = 0; j < N; j++) { ssafy[i][j] = Integer.parseInt(st.nextToken()); } } numbers = new int[2]; // 2개씩 우주 짝지어주기 comb(0, 0); // 일단 우주 2개씩 고르러가자 => 2개 골랐으면 그 안에서 selectPlanet()사용해서 행성들 비교도하자!! System.out.println(answer); // } // 조합 : 우주 2개씩 고르는 경우의 수 private static void comb(int cnt, int cur) { if (cnt == 2) { planets = new int[2]; notSame = false; selectPlanet(0, 0); // 우주 2개 골랐으면, 이제 행성 크기를 비교해보자 if (!notSame) answer++; // 우주 대소 비교가 같았으므로 answer을 증가시키자 return; } else { for (int i = cur; i < M; i++) { numbers[cnt] = i; comb(cnt + 1, i + 1); } } } // 조합 : 행성을 2개씩 고르는 경우의 수 private static void selectPlanet(int cnt, int cur) { if (notSame == true) // notSame이 false일때만.. return; if (cnt == 2) { // numbers에는 우주의 번호가 담겨있고, planets에는 행성의 번호가 담겨 있음 // 각 우주의 행성끼리의 대소비교가 동일한가 => 크면 1, 같으면 0, 작으면 -1 // => 행성0 >= 행성1 ? (행성0 > 행성 1 ? 1 : 0) : -1; int planet1 = ssafy[numbers[0]][planets[0]] >= ssafy[numbers[0]][planets[1]] ? (ssafy[numbers[0]][planets[0]] > ssafy[numbers[0]][planets[1]] ? 1 : 0) : -1; int planet2 = ssafy[numbers[1]][planets[0]] >= ssafy[numbers[1]][planets[1]] ? (ssafy[numbers[1]][planets[0]] > ssafy[numbers[1]][planets[1]] ? 1 : 0) : -1; if (planet1 != planet2) notSame = true; // 다르면 다르다고 notSame을 true로 바꿔주어 더이상 비교하지 않도록하자 return; } else { for (int i = cur; i < N && !notSame; i++) { planets[cnt] = i; selectPlanet(cnt + 1, i + 1); } } } }
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[17471] 백준 - 게리맨더링(JAVA) (0) 2021.03.15 [14891] 백준 - 톱니바퀴(JAVA) (0) 2021.03.14 [18512] 백준 - 점프 점프(JAVA) (0) 2020.08.31 [10814] 백준 - 나이순 정렬(C++) (0) 2020.04.30 [2108] 백준 : 통계학(C++) (0) 2020.04.30 댓글