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

+ Recent posts