출처:https://www.acmicpc.net/problem/7568
영어 brute는 "짐승 같은, 난폭한"이라는 뜻이고, brute-force는 "(정제되지 않은) 난폭한 힘, 폭력"이라는 뜻이다. 시간과 자원이 엄청나게 들어서 얼핏 보면 무식하다고 생각할 수도 있겠지만, 정확도 100%를 보장한다는 점에서 암호 해독법 중 가장 확실하고 무서운 방법이다. 이론적으로 가능한 모든 경우의 수를 다 검색해 보는 것이라 정확도 100%가 항상 보장되니, 암호학에서는 가장 확실한 방법으로 통용되고 있다. 무엇보다도 암호 확인 작업은 손으로 입력한 문자열의 동일 여부를 확인하는 것이기 때문에, 가능한 경우의 수를 하나씩 대입하다 보면 언젠가는 암호를 찾을 수 있게 되는 식이다. 다만 정말로 그냥 무식하게 때려 박는 건 아니고, 숫자만 섞어서 대입해 보기 한 번, 로마자만 섞어서 대입해 보기 한 번 이런 식으로 하다가 안 되면 나머지를 순차적으로 하는 식으로 특정 규칙에 따라 우선순위를 두고 하기도 한다. 출처: 나무위키
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//https://www.acmicpc.net/problem/7568 문제출처
public class Baek7568 {
static int n;
static int [][] hw;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
n = Integer.parseInt(br.readLine());
hw = new int[n][2];
for (int i = 0; i < n; i++) {
String[] temp = br.readLine().split(" ");
hw[i][0] = Integer.parseInt(temp[0]);
hw[i][1] = Integer.parseInt(temp[1]);
}
//완전탐색하면서 순서 매기기
for (int i = 0; i < n; i++) {
int order = 1;
for (int j = 0; j < n; j++) {
if(i==j) continue;
if (hw[i][0] < hw[j][0] && hw[i][1] < hw[j][1]) {
order++;
}
}
sb.append(order).append(" ");
}
System.out.println(sb.toString());
}
}
어려웠던 부분은 딱히 없다.