7568문제 덩치(완전탐색,브루트포스)+DFS로 변경해본 풀이추가
2021. 9. 17. 11:00ㆍ알고리즘/백준
반응형
https://www.acmicpc.net/problem/7568
풀이에 참고한 주소
##포인트##
- 완전탐색문제인데 어떻게 완전탐색을 할것인가
- X,Y값으로 주어지는 몸무게,키를 어떻게 받을것인가
- Rank가 어떻게 나뉘는가!
5
55 185
58 183
88 186
60 175
46 155
결국 각각 다 비교를 해서 자기보다 큰 덩치가 있는지 체크하면된다.
##일반적인 완전탐색 풀이##
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//몸무게가 X고 키가Y면 그사람의 덩치는 (x,y)로 표시한다.
//A,B가 있을때 X,Y값이 각각 더 크면 덩치가 더 크다라고 한다.
//전체 사람의 수 N 조건 2 ≤ N ≤ 50
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int result[] = new int[N];
//2중배열
int[][] arr = new int[N][2];
for(int i = 0; i < N; i++) {
arr[i][0] = in.nextInt(); // [i][0] : 몸무게
arr[i][1] = in.nextInt(); // [i][1] : 키
}
//모든사람과다 비교해서 자기보다 X,Y가 큰사람(덩치가 큰 사람이 있는지를 찾는다)
for(int i=0; i<N; i++) {
int rank = 1;
for(int j=0; j<N; j++) {
if(i==j) {
result[i] = rank;
continue;
}else if(arr[i][0]<arr[j][0] && arr[i][1]<arr[j][1]) {
rank++;
}
//마지막 비교대상인경우
if(j+1==N) {
result[i] = rank;
}
}
}
String sys = "";
for(int i=0; i<result.length; i++) {
if(i==0) {
sys+= result[i];
}else {
sys+= " "+result[i];
}
}
System.out.println(sys);
}
}
##DFS로 변경해본 코드 완전탐색의 경우 dfs를 사용하기도 한다.##
import java.util.Scanner;
public class boj_7568_dfs {
public static void main(String[] args) {
//몸무게가 X고 키가Y면 그사람의 덩치는 (x,y)로 표시한다.
//A,B가 있을때 X,Y값이 각각 더 크면 덩치가 더 크다라고 한다.
//전체 사람의 수 N 조건 2 ≤ N ≤ 50
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int result[] = new int[N];
//2중배열
int[][] arr = new int[N][2];
for(int i = 0; i < N; i++) {
arr[i][0] = in.nextInt(); // [i][0] : 몸무게
arr[i][1] = in.nextInt(); // [i][1] : 키
}
int depth =0; //최초 뎁스 0으로 시작 for문을 위해
int length = N;
for(int i=0; i<length; i++) {
dfs(i,length,result,arr);
}
}
private static void dfs(int depth,int length,int[] result,int[][] arr) {
//모든사람과다 비교해서 자기보다 X,Y가 큰사람(덩치가 큰 사람이 있는지를 찾는다)
int rank = 1;
for(int j=0; j<length; j++) {
if(depth==j) {
result[depth] = rank;
continue;
}else if(arr[depth][0]<arr[j][0] && arr[depth][1]<arr[j][1]) {
rank++;
}
//마지막 비교대상인경우
if(j+1==length) {
result[depth] = rank;
}
}
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
2750문제 수 정렬하기(정렬) Java (0) | 2021.09.17 |
---|---|
2798 블랙잭(완전탐색,브루트포스) Java(DFS) (0) | 2021.09.17 |
2231문제 분해합(완전탐색,브루트포스) Java (0) | 2021.09.17 |
10870문제 피보나치(재귀) Java (0) | 2021.09.17 |
10872문제 팩토리얼(재귀) Java (0) | 2021.09.17 |