728x90
문제
서로 다른 양의 정수로 이루어진 수열에서
둘을 합해 주어진 자연수 X가 될 수 있는 경우의 수를 구하라
접근 방식
이전까지 풀어왔던 방식과 동일하게 배열에 각 숫자들이 등장 여부를 기록한 후에
현재 숫자와 합해서 X가 될 수 있는 숫자가 등장 했는지를 확인하고
등장 했다면 카운트를 1씩 증가시켜 준다.
배열을 사용할 땐 인덱스의 범위를 신경서야 하기 때문에
각 숫자의 범위를 생각하면서 풀면 쉽게 풀 수 있다.
(1 ≤ number ≤ 1000000, 1 ≤ x ≤ 2000000)
풀이
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] numbers = br.readLine().split(" ");
int x = Integer.parseInt(br.readLine());
int[] arr = new int[2000001];
int count = 0;
for (String number : numbers) {
int num = Integer.parseInt(number);
if (x - num >= 1 && arr[x - num] == 1) {
count++;
}
arr[num] = 1;
}
System.out.println(count);
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 5397번 : 키로거 (0) | 2023.09.29 |
---|---|
[백준] 1406번 : 에디터 (0) | 2023.09.29 |
[백준] 1475번 : 방 번호 (0) | 2023.09.28 |
[백준] 2577번 : 숫자의 개수 (0) | 2023.09.28 |
[배열] 두 수의 합이 100인 경우 (0) | 2023.09.27 |