https://www.acmicpc.net/problem/1940
내 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(input.readLine());
int m = Integer.parseInt(input.readLine());
StringTokenizer st = new StringTokenizer(input.readLine());
int[] array = new int[n];
for (int i = 0; i < n; i++){
array[i] = Integer.parseInt(st.nextToken());
}
int left = 0;
int right = n-1;
int answer = 0;
Arrays.sort(array);
while(left < right){
int tmp = array[left] + array[right];
if(tmp == m) {
answer++;
left++;
right--;
}
else if (tmp < m) {
left++;
} else{
right--;
}
}
System.out.println(answer);
}
}
코드 설명
단순한 슬라이딩 윈도우 문제인것 같다.
입력값이 저장된 배열을 오름차순 정렬한 후 양 끝에서 2개씩 더해서 조건에 부합하는지 확인하는 문제였다.
'문제풀이 > 백준' 카테고리의 다른 글
[JAVA] 좋다 - 백준 1254번 (0) | 2025.05.22 |
---|---|
[Python] 수들의 합 5 - 백준 2018번 (0) | 2025.05.22 |
[JAVA] 최솟값 찾기 - 백준 11003번 (0) | 2025.05.20 |
[JAVA] 나머지 합 구하기 - 백준 10986번 (0) | 2025.05.20 |
[JAVA] 구간 합 구하기 5 (0) | 2025.05.19 |