자바 백준 1940번
실버 4
https://www.acmicpc.net/problem/1940
문제 보기
분류: 정렬, 두 포인터
코드 폴이
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 재료의 개수 N과 갑옷을 만드는데 필요한 수 M을 입력
int N = sc.nextInt();
int M = sc.nextInt();
// 재료의 고유한 번호들을 저장할 배열
int[] materials = new int[N];
// 재료의 고유한 번호들을 입력받아 배열에 저장
for (int i = 0; i < N; i++) {
materials[i] = sc.nextInt();
}
// 재료의 번호를 오름차순으로 정렬
Arrays.sort(materials);
// countArmors 메서드를 호출하여 갑옷을 만들 수 있는 경우의 수를 계산
int count = countArmors(materials, M);
// 결과 출력
System.out.println(count);
}
// 갑옷을 만들 수 있는 경우의 수를 계산하는 메서드
private static int countArmors(int[] materials, int M) {
int count = 0;
int left = 0;
int right = materials.length - 1;
// 두 포인터를 사용하여 갑옷을 만들 수 있는 경우의 수를 계산
while (left < right) {
int sum = materials[left] + materials[right];
if (sum == M) {
// 갑옷을 만들 수 있는 경우의 수 증가
count++;
left++;
right--;
} else if (sum < M) {
// 합이 M보다 작으면 왼쪽 포인터를 오른쪽으로 이동
left++;
} else {
// 합이 M보다 크면 오른쪽 포인터를 왼쪽으로 이동
right--;
}
}
return count;
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 9733 - 꿀벌 (2) | 2024.05.01 |
---|---|
[Java] 백준 풀기 10156 - 과자 (0) | 2024.04.30 |
[Java] 백준 풀기 14928 - 큰 수 (BIG) (0) | 2024.04.27 |
[Java] 백준 풀기 1271 - 엄청난 부자2 (0) | 2024.04.24 |
[Java] 백준 풀기 4158 - CD (0) | 2024.04.23 |