배열의 기본 지식 뿐만 아니라, 수학적인 접근 방법도 필요함.
그 감각을 기르기 위해서 기초 문제부터 깊게 보는 중!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 주몽의명령 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());
int[] A = new int[N];
int count = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i<N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
//1. a[n]에 오름차순으로 정렬
Arrays.sort(A);
int i = 0; //A[0] -> min
int j = N-1; //A[N-1] -> max
//2. min(맨 왼쪽)과 max(맨 오른쪽)를 더해보며 반복
while(i<j) {
if(A[i]+A[j] < M) i++;
else if (A[i]+A[j] > M) {
j--;
} else{
count++;
i++; j++;
}
}
System.out.println(count);
}
}
'코딩테스트' 카테고리의 다른 글
[선택 정렬] 백준 1427 (1) | 2024.02.27 |
---|---|
[버블 정렬] 백준 2750 (0) | 2024.02.27 |
[슬라이딩 윈도우 실전문제] DNA 비밀번호 - 백준12891 (1) | 2024.02.26 |
[구간 합 실전 문제] 백준 11659 (1) | 2024.02.26 |
[배열과 리스트 연습문제] 숫자와 합 구하기 (백준 11720) (0) | 2024.02.26 |