공부기록/백준
[백준] 1253번 좋다
메델
2023. 12. 13. 05:04
[방법1 - HashMap 이용]
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int N = kb.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = kb.nextInt();
}
int count = 0;
for (int i = 0; i < N; i++) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int j = 0; j < N; j++) {
if (i == j) continue;
int diff = arr[i] - arr[j];
if (map.containsKey(diff)) {
count++;
break;
}
map.put(arr[j], j);
}
}
System.out.println(count);
}
}
[방법2- 투포인터 이용]
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
int count = 0;
for(int i=0; i<n; i++) {
arr[i] = kb.nextInt();
}
Arrays.sort(arr);
for(int i=0; i<n; i++) {
int target = arr[i];
int lt=0, rt=n-1;
while(lt<rt) {
int sum = arr[lt] + arr[rt];
if(sum == target) {
if( rt != i && lt!= i) {
count++;
break;
}
else if(rt == i) rt--;
else if(lt == i) lt++;
}else if(sum< target) lt++;
else {
rt--;
}
}
}
System.out.println(count);
}
}