CodingTest/Java
BOJ_17093 : Total Circle
Soom_1n
2022. 10. 19. 16:12
17093λ²: Total Circle
μ’ννλ©΄μμ μ μ λ°°μ΄ P = P1, P2, β―, PNμ Q = Q1, Q2, β―, QMμ΄ μλ€. Q λ°°μ΄ μμ ν μ μ μ€μ¬μΌλ‘, P λ°°μ΄ μμ λͺ¨λ μ μ ν¬ν¨νλ μ΅μ λμ΄μ μμ λ°μ§λ¦ μ€ μ΅λκ°μ ꡬνμμ€.
www.acmicpc.net
πΈ λ¬Έμ λΆμ πΈ
- ν μ μ μ€μ μΌλ‘ μ¬λ¬ μ’νλ₯Ό μ§λλ μμ νμλͺ¨μκΉμ§ μκ°νλ©΄ 무μν λ§λ€.
- λ¬Έμ 쑰건μμ μ΅μν¬κΈ°μ μμ μ΅λ λ°μ§λ¦μ΄λΌ νμΌλ―λ‘, μ€μ κ³Ό κ°μ₯ λ¨Ό μ’νκΉμ§μ 거리λ€.
- λͺ¨λ μ€μ μμ ꡬν λ°μ§λ¦μ μ΅λκ°λ€ μ€μμ κ°μ₯ ν° κ°μ μΆλ ₯νλ€.
- μ΅λκ° μ°ΎκΈ°κ° 2λ²μλ μ
μ΄κ³ , forλ¬Έμ΄ μ€μ²©λμ΄ ν λ²μ© λΉκ΅νλ ννμ΄λ€.
- n, mμ μ΅λκ°μ 1000μ΄λ―λ‘ O(n^2)μμ μ΅λ κ³μ°λμ 1,000,000 (λ°±λ§)μΌλ‘ 1μ΄ λ―Έλ§μ΄λ€.
λ°λΌμ μ νμκ° 1μ΄λ₯Ό λμ§ μλλ€.
- n, mμ μ΅λκ°μ 1000μ΄λ―λ‘ O(n^2)μμ μ΅λ κ³μ°λμ 1,000,000 (λ°±λ§)μΌλ‘ 1μ΄ λ―Έλ§μ΄λ€.
- x, yμ ν¬κΈ°κ° 10^7 == 10,000,000(μ²λ§) κΉμ§ μ΄κ³ , λ°μ§λ¦ κ³μ°μμ μ κ³±νκ² λλ€.
- μ κ³±νλ©΄ 100,000,000,000,000(λ°±κ²½) μ΄λ―λ‘ intλ₯Ό μ΄κ³Όνλ€...longμ μ¬μ©ν΄μΌνλ€.
πΈ μ½λ πΈ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
ArrayList<Pair> nl = new ArrayList<>();
ArrayList<Pair> ml = new ArrayList<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
nl.add(new Pair(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
ml.add(new Pair(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
}
long answer = 0;
for (int i = 0; i < m; i++){
long rr = 0;
for (int j = 0; j < n; j++){
long temp = (long)(Math.pow(nl.get(j).x - ml.get(i).x, 2) + Math.pow(nl.get(j).y - ml.get(i).y, 2));
if (temp > rr) {
rr = temp;
}
}
if (rr > answer){
answer = rr;
}
}
System.out.println(answer);
}
}
class Pair {
int x,y;
Pair(int x, int y){
this.x = x;
this.y = y;
}
}
πΈ μ½λ ν΄μ πΈ
- μ’ν κ³μ°μ ν΄μΌνλ―λ‘, PairλΌλ ν΄λμ€λ₯Ό λ§λ€μ΄μ x, yλ₯Ό ν¨κ» μ μ₯νλ€.
- ArrayLIst<> μ μΈμλ‘ λ£μΌλ©°, μ¬μ©ν μλ£νμ Pairλ‘ μ§μ νλ€.
- μ€μ κ³Ό μ’νλ€μ 거리λ₯Ό κ³μ°νλ€.
- [λ°μ§λ¦^2 == (x-x`)^2 + (y-y`)^2 ] 곡μμ μ¬μ©νλ€. (μ κ³± μ¬μ© -> longν νμ)
- λμ¨ λ°μ§λ¦μ μ κ³±κ°μ€ μ΅λκ°μ rrμ μ μ₯νλ€.
- λμ€λ rrμ€ μ΅λκ°μ answerμ μ μ₯νκ³ μ΅μ’ μΆλ ₯νλ€.
πΈ end πΈ
- κ·Έλ €μ§λ μμ΄ μ νν μμΈ μ€ μκ³ μλͺ» μ κ·Όν΄μ λ§μ΄ νλ Έμλ€.
- νμνμΌλ‘ κ·Έλ €μ§λ€κ³ μκ°μ΄ κ°λ, μ μ΅μλμ΄μ μ΅λ λ°μ§λ¦μΈμ§ μ μ μμλ€.
- νμ΄κ° μ μ λ¬Έμ μ¬μ λ λ΄ μ€λ₯λ₯Ό μμμΉλ¦¬κΈ° μ΄λ €μ μ§λ§, νκ³ λλ κ°λ¨νκ³ λΈλ‘ μ¦ 1λ¬Έμ μμ§λ§ λ§μ 곡λΆκ° λ κ² κ°λ€.
728x90