import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Arrays;
public class Main{
static int[] arr;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<n; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int x = Integer.parseInt(br.readLine());
// 정렬하고
Arrays.sort(arr);
int ans=0, i=0, j=n-1;
// 양 끝에서부터
while(true){
if(i==j || i>j || j<i) break;
if(arr[i]+arr[j]==x){
ans++;
i++; j--;
continue;
} else if(arr[i]+arr[j]>x){
j--;
continue;
} else {
i++;
continue;
}
}
System.out.println(ans);
}
}
정렬 구현해도 되고 Arrays.sort 써도 된다.
양 끝에서부터 비교하는게 핵심
+ python
import sys
read = sys.stdin.readline
n = int(read().rstrip())
arr = list(map(int, read().rstrip().split(" ")))
x = int(read().rstrip())
arr.sort()
start = 0
end = n-1
ans = 0
while start < end:
if arr[start] + arr[end] == x:
ans += 1
start += 1
end -= 1
elif arr[start] + arr[end] < x:
start += 1
else:
end -= 1
print(ans)'백준 1 > 기타' 카테고리의 다른 글
| [백준 2840] 행운의 바퀴 (Java) (0) | 2021.01.11 |
|---|---|
| [백준 5397] 키로거 (Java) (0) | 2021.01.11 |
| [백준 10814] 나이순 정렬 (Java) (0) | 2020.12.17 |
| [백준 14753] Multi Max (C++) (0) | 2020.12.07 |
| [백준 10815] 숫자 카드 (C++/Java) (0) | 2020.12.07 |