Skip to content

Commit 1776951

Browse files
authored
[20250206] BOJ / 골드5 / 별자리 찾기 / 설진영
1 parent e423a54 commit 1776951

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
```java
2+
package com.one;
3+
import java.io.BufferedReader;
4+
import java.io.InputStreamReader;
5+
import java.util.HashSet;
6+
import java.util.Objects;
7+
import java.util.Set;
8+
import java.util.StringTokenizer;
9+
10+
public class Main {
11+
12+
public static void main(String[] args) throws Exception {
13+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14+
StringTokenizer st;
15+
int startX = 0;
16+
int startY = 0;
17+
18+
int M = Integer.parseInt(br.readLine());
19+
Set<Star> mSet = new HashSet<>();
20+
for (int i = 0; i < M; i++) {
21+
st = new StringTokenizer(br.readLine());
22+
int x = Integer.parseInt(st.nextToken());
23+
int y = Integer.parseInt(st.nextToken());
24+
25+
startX = x;
26+
startY = y;
27+
mSet.add(Star.of(x, y));
28+
}
29+
int N = Integer.parseInt(br.readLine());
30+
Set<Star> nSet = new HashSet<>();
31+
for (int i = 0; i < N; i++) {
32+
st = new StringTokenizer(br.readLine());
33+
int x = Integer.parseInt(st.nextToken());
34+
int y = Integer.parseInt(st.nextToken());
35+
36+
nSet.add(Star.of(x, y));
37+
}
38+
39+
for(Star star: nSet) {
40+
int dx = star.x - startX;
41+
int dy = star.y - startY;
42+
if (adjustAndDetermine(mSet , nSet, dx, dy)) {
43+
System.out.println(dx + " " + dy);
44+
return;
45+
}
46+
}
47+
}
48+
49+
private static boolean adjustAndDetermine(Set<Star> a, Set<Star> b, int dx, int dy) {
50+
for(Star star : a) {
51+
star.adjust(dx, dy);
52+
}
53+
if (determine(a, b)) {
54+
return true;
55+
}
56+
57+
for(Star star : a) {
58+
star.recover(dx, dy);
59+
}
60+
return false;
61+
}
62+
63+
private static boolean determine(Set<Star> a, Set<Star> b) {
64+
return b.containsAll(a);
65+
}
66+
67+
private static class Star {
68+
private int x;
69+
private int y;
70+
71+
private Star(int x, int y) {
72+
this.x = x;
73+
this.y = y;
74+
}
75+
76+
public static Star of(int x, int y) {
77+
return new Star(x, y);
78+
}
79+
80+
public void adjust(int dx, int dy) {
81+
x+=dx;
82+
y+=dy;
83+
}
84+
public void recover(int dx, int dy) {
85+
x-=dx;
86+
y-=dy;
87+
}
88+
89+
@Override
90+
public int hashCode() {
91+
return Objects.hash(x, y);
92+
}
93+
94+
@Override
95+
public boolean equals(Object obj) {
96+
if (this == obj)
97+
return true;
98+
if (obj == null)
99+
return false;
100+
if (getClass() != obj.getClass())
101+
return false;
102+
Star other = (Star) obj;
103+
return x == other.x && y == other.y;
104+
}
105+
}
106+
}
107+
108+
109+
```

0 commit comments

Comments
 (0)