반응형
-내 생각
브루트 포스 분류로 된 문제로 간단하게 요약해보자면, n명의 사람에게 몸무게와 키를 입력받고 다른 사람과 비교하여 자신보다 몸무게와 키가 큰 사람의 수 +1 이 자신의 등수가 되며 이를 공백을 기준으로 출력하는 문제이다. 배열에 저장해 정렬 라이브러리를 사용하면 쉬울 수 있지만, 브루트 포스 방식으로 모든 경우의 수를 따지기 위해 모든 비교를 수행하고자 했다.
-해법
모든 사람과 비교하기 위해 반복문 2개를 중첩하였고, 각 경우의 수를 비교하여 자신보다 덩치가 큰 사람이 나올 때 마다 카운트하여 비교가 끝났을 때 +1 하여 자신의 등수를 결정한다. 코드를 보자.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 사람 수 입력
int arr[][] = new int[n][3]; // 사람 수 만큼 몸무게, 키, 등수 배열 생성
for(int i=0;i<n;i++) { // 몸무게와 키만 입력
arr[i][0]= sc.nextInt();
arr[i][1]= sc.nextInt();
}
int cnt; // 카운트 변수
for(int i=0;i<arr.length;i++) { //모든 사람을 기준으로 잡는 반복문
cnt =0;
for(int j=0;j<arr.length;j++) { // 기준으로 잡은 사람과 다시 모든 사람을 비교 반복
if(arr[i][0]<arr[j][0] && arr[i][1]<arr[j][1]) { // 기준으로 삼은 사람보다 키와 몸무게가 큰 사람을 만나면
cnt++; //카운트 증가
}
}
arr[i][2]=cnt+1; // 비교가 끝나면 카운트에+1 후 등수 배열에 저장
}
for(int i=0;i<arr.length;i++) { // output
System.out.print(arr[i][2]+" ");
}
}
}
반응형