728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import static java.lang.Math.*;
public class Main {
public static class Node{
int x;
int y;
public Node(int x,int y){
this.x=x;
this.y=y;
}
}
public static int N;
public static int I;
public static int M;
public static ArrayList<Node>fish=new ArrayList<>();
public static int count=0;
public static void search(int x,int y,int netX,int netY){
// 물고기 인덱스 가져옴
// 0 1 1 4 가 들어왔을 때
int cnt=0;
for(int i=0;i<M;i++){
if(fish.get(x).x<=fish.get(i).x&&fish.get(i).x<=fish.get(x).x+netX&&fish.get(y).y<=fish.get(i).y&&fish.get(i).y<=fish.get(y).y+netY){
cnt++;
}
}
count=Math.max(count,cnt);
}
public static void main(String[] args) throws NumberFormatException, IOException {
// 초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine()) ;
N = Integer.parseInt(st.nextToken());
I = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for(int i=0;i<M;i++){
st=new StringTokenizer(br.readLine());
int x=Integer.parseInt(st.nextToken());
int y=Integer.parseInt(st.nextToken());
fish.add(new Node(x,y));
}
// 물고기를 기준으로 생각해줬어야함! (지금까지는 그물을 기준으로 생각했었음!)
// 그물의 테두리에 물고기가 걸치게 끔 생각했어야함
for(int i=0;i<M;i++){
for(int j=0;j<M;j++){
// 물고기 2개를 골라줌
for(int k=1;k<I/2;k++){
search(i,j,k,I/2-k);
}
}
}
System.out.println(count);
}
}
|
cs |
이 문제는 진짜 너무 어려워서 답지를 보면서도 고민을 오래했다.
물고기 2개를 선택해주고 그물의 길이도 선택해준다음에 search를 돌리면 된다.
이렇게 노란색 칸과 초록색칸의 교집합에 있는 물고기의 개수를 세주면 된다.
결국 물고기가 그물망의 모서리에 걸쳐있게 그물을 내주면 된다.
이런식으로 구해주면 물고기가 그물의 꼭짓점에 있을 때는 물론 그물에 걸쳐있을때도 count 해줄 수 있다.
참고자료
https://justicehui.github.io/koi/2018/09/09/BOJ7573/
728x90
반응형
'알고리즘 > 완전탐색' 카테고리의 다른 글
[java 백준] 골드 5/ 15686번 치킨배달 (0) | 2022.07.25 |
---|---|
[JAVA 프로그래머스] lv2/ 문자열 압축 (0) | 2022.07.13 |
[java 백준] 골드 4/ 1806번 부분합 (0) | 2022.04.02 |
[java 백준] 실버 3/ 2003번 수들의 합 2 (0) | 2022.03.31 |
[java 백준] 골드 4/2580번 스도쿠 (0) | 2022.03.28 |
댓글