https://www.acmicpc.net/problem/26091
입력을 오름차순 정렬한다.
l = 현재 최소값 포인터, r = 현재 최대값 포인터로 정의한다.
l+r >= M 이라면, ans++하고 다음 비교 (l++, r--) 로 넘어간다.
l+r < M 이라면, 현재 l로는 어떤 값과 더해도 M을 넘을 수 없으므로 l++한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int ans = 0;
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] people = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).sorted()
.toArray();
int l = 0;
int r = N - 1;
while (l < r) {
if (people[l] + people[r] >= M) {
ans++;
l++;
r--;
} else {
l++;
}
}
System.out.println(ans);
}
}
'[백준] PS > Java' 카테고리의 다른 글
[백준 13305] 주유소 - JAVA (0) | 2025.01.28 |
---|---|
[백준 25970] 현대 모비스 에어 서스펜션 - JAVA (0) | 2025.01.28 |
[백준 2698] 인접한 비트의 개수 - JAVA (1) | 2025.01.19 |
[백준 18869] 멀티버스 Ⅱ - JAVA (0) | 2024.11.14 |
[백준 1965] 상자넣기 - JAVA (0) | 2024.10.31 |