[λ°±μ€/1002/μ€λ²3] ν°λ
https://www.acmicpc.net/problem/1002
1002λ²: ν°λ
κ° ν μ€νΈ μΌμ΄μ€λ§λ€ λ₯μ¬λͺ μ΄ μμ μ μλ μμΉμ μλ₯Ό μΆλ ₯νλ€. λ§μ½ λ₯μ¬λͺ μ΄ μμ μ μλ μμΉμ κ°μκ° λ¬΄νλμΌ κ²½μ°μλ $-1$ μΆλ ₯νλ€.
www.acmicpc.net
<<νμ΄>>
λ 벨: μ€λ² 3
μκ° λ³΅μ‘λ : O(N)
μκ°: 284ms
μ£Όμ κ°λ
: Math.sqrt, continue, ArrayList, λ κ°μ μμ΄ ν μμ λ΄λΆμ μμ λ λ°κΉ₯μ μμ λ ꡬλΆ
μ΄ λ¬Έμ λ λ¨μ ꡬν λ¬Έμ μ΄λ©΄μ μλ μ λ°°μ΄ μνμ μΈ μ§μμ΄ νμν λ¬Έμ μ΄λ€. λ무 μ€λλ§μ μ νλ κ²½μ°μ μλ₯Ό λ μμ΄ λ°μμ κ²ΉμΉκ³ μ νκ³ λ±μ κ³μ°ν΄μ μ²μμ ꡬνλ€κ° νλ Έλ€κ° λμλ€. μκ³ λ³΄λ, λ κ°μ μ μ€ ν μμ΄ λ΄λΆμμ κ²ΉμΉλ 쑰건λ ν¬ν¨μ μμΌ°μ΄μΌ νλ€.
κ·Έλμ μ΄λ₯Ό μΆκ°νκ³ λ¬Έμ λ₯Ό μ κ·Όμ ν΄μ κ²°κ³Όμ μΌλ‘ νμ μ€ μμλλ°, λ νλ Έλ€κ° λμλ€... γ
γ
λ°λ‘ 무νν κ²ΉμΉ λ -1λ‘ μΆλ ₯νλΌλ λΆλΆ λλ¬Έμ΄μλ€. λλ νλ κ²ΉμΉ λ, λ κ° κ²ΉμΉ λ, νλλ μ κ²ΉμΉ λλ₯Ό μ μΈνλ©΄ 무쑰건 -1μ΄ μΆλ ₯μ΄ λλ€κ³ μκ°νλ€. νμ§λ§ μ΄λ μλͺ»λ μκ°μ΄μκ³ μμ ν κ²ΉμΉλ κ²½μ°λ μ€μ¬ μ κ³Ό λ°μ§λ¦ κΈΈμ΄ μ λΆκ° κ°μλ° μ΄λ λ΄κ° ꡬνν μ½λμμλ 1λ₯Ό λμΆν΄μ listμ λ£μ΄μ€λ²λ¦¬λ λ¬Έμ κ° λ°μνλ€.
κ·Έλμ μ¬μ μ μμ ν κ²ΉμΉλ κ²½μ°λ₯Ό μ μΈμν€κ³ μμνλ€.
if(x[0]==x[3] && x[1]==x[4] && x[2]==x[5]) {
answer.add(-1);
continue;
}
λ°λ‘ μ΄ λΆλΆμ΄λ€. μ΄λ κ² νμλλ 무μ¬ν λ§μΆ μκ° μμλ€.
import java.util.ArrayList;
import java.util.Scanner;
class Main {
private ArrayList<Integer> solution(ArrayList<int[]> list2) {
ArrayList<Integer> answer = new ArrayList<>();
for (int[] x : list2) {
if(x[0]==x[3] && x[1]==x[4] && x[2]==x[5]) {
answer.add(-1);
continue;
}
if(Math.sqrt((x[0]-x[3])*(x[0]-x[3]) + (x[1]-x[4])*(x[1]-x[4])) > Math.max(x[2], x[5])) {
if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) == (x[2] + x[5])) {
answer.add(1);
} else if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) < (x[2] + x[5])) {
answer.add(2);
} else if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) > (x[2] + x[5])) {
answer.add(0);
}
} else {
if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) + Math.min(x[2], x[5]) == Math.max(x[2], x[5])) {
answer.add(1);
} else if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) + Math.min(x[2], x[5]) > Math.max(x[2], x[5])) {
answer.add(2);
} else if (Math.sqrt((x[0] - x[3]) * (x[0] - x[3]) + (x[1] - x[4]) * (x[1] - x[4])) + Math.min(x[2], x[5]) < Math.max(x[2], x[5])) {
answer.add(0);
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int test = in.nextInt();
ArrayList<int[]> list1 = new ArrayList<>();
ArrayList<int[]> list2 = new ArrayList<>();
for (int i = 0; i < test; i++) {
list1.add(new int[6]);
}
for(int[] a : list1) {
for (int i = 0; i < 6; i++) {
a[i] = in.nextInt();
}
list2.add(a);
}
for (int answer : T.solution(list2) ) {
System.out.println(answer);
}
}
}
λ€λ₯Έ μ¬λλ€μ λ 284msλ³΄λ€ λΉ λ₯΄κ² ꡬνμ ν κ±° κ°μλ° ν λ² μ°Ύμλ΄μΌκ² λ€ !
<<μΆκ° 곡λΆ>>
κΉλ¨Ήμ΄μ λ€μ ν λ² μ 리νκ³ κ°λ€!!
break : λκ³ μλ λ°λ³΅λ¬Έμ μμ ν μ’
λ£ μν€κ³ λ€μ λ¨κ³λ₯Ό μ§ννλ€.
continue : λμ΄μ λ°μΌλ‘ μ§ννμ§ μκ³ forλ¬Έμ λ€μ λ¨κ³λ₯Ό μ§ννλ€.
return: λ©μλ μ 체λ₯Ό μ’
λ£μν¨λ€.
μ’ λ λν
μΌν μ 리
- break: νμ¬ μ€ν μ€μΈ λ°λ³΅λ¬Έ (μ: for, while, do-while 루ν)μ μμ ν μ’ λ£μν€κ³ , λ°λ³΅λ¬Έ λ°λ‘ λ€μμ μμΉν μ½λμ μ€νμ κ³μν©λλ€. switch λ¬Έ λ΄μμλ μ¬μ©λμ΄, case λΈλ‘μ μ€νμ μ’ λ£νκ³ switch λ¬Έμ λΉ μ Έλμ΅λλ€.
- continue: continueκ° ν¬ν¨λ λ°λ³΅λ¬Έμ νμ¬ μ€ν μ€μΈ λ°λ³΅μ μ¦μ μ’ λ£νκ³ , λ°λ³΅λ¬Έμ λ€μ λ°λ³΅μΌλ‘ 건λλ°μ΄ κ³μ μ€νν©λλ€. for 루νμ κ²½μ°, μ¦κ°μμΌλ‘ μ΄λνκ³ , while λλ do-while 루νμ κ²½μ°, 쑰건μμΌλ‘ λμκ°λλ€.
- return: νμ¬ μ€ν μ€μΈ λ©μλλ₯Ό μ’ λ£νκ³ , λ©μλλ₯Ό νΈμΆν κ³³μΌλ‘ μ μ΄λ₯Ό λ°νν©λλ€. void λ©μλμμλ λ¨μν λ©μλ μ€νμ μ’ λ£νλ©°, λ°ν νμ μ΄ μλ λ©μλμμλ κ°μ λ°νν©λλ€. return λ¬Έμ λ§λλ©΄, κ·Έ λ¬Έμ₯ μ΄νμ λ©μλ λ΄ μ½λλ μ€νλμ§ μμ΅λλ€.
'μ½λ©ν μ€νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/1003/μ€λ²3] νΌλ³΄λμΉ ν¨μ (6) | 2024.03.01 |
---|---|
[DFS] 7. μ‘°ν©μ κ²½μ°μ(λ©λͺ¨μ΄μ μ΄μ ) (6) | 2024.02.26 |
[DFS] 6. μμ΄ κ΅¬νκΈ° (83) | 2024.02.24 |
[DFS] 5. λμ κ΅ν (6) | 2024.02.24 |
[λ°±μ€/1051/μ€λ²3] μ«μ μ μ¬κ°ν (1) | 2024.02.22 |
λκΈ