-
[백준] 3273 두 수의 합ALGORITHM/BOJ 2022. 7. 25. 13:54
https://www.acmicpc.net/problem/3273
2022-07-25
12345678910111213141516171819202122232425262728293031import java.util.Arrays;import java.util.Scanner;public class Main3273 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] arr = new int[n];for(int i = 0; i < n; i++) {arr[i] = sc.nextInt();}int x = sc.nextInt();int start = 0;int end = n-1;int answer = 0;Arrays.sort(arr);while(start < end) {if(arr[start] + arr[end] > x) end--;else if(arr[start] + arr[end] == x) {answer++;end--;} else start++;}System.out.println(answer);}}cs #문제풀이
투 포인터로 풀지 않아도 되겠지만 투 포인터로 풀었다.
양끝에서 포인터를 좁혀가면서 A[i] + A[j] = x인 모든 경우를 찾는 문제 (더 쉬운 방법이 있지만, 연습을 위해 투 포인터를 써봅시다.) 오름차순으로 정렬 한 후 양 끝 (start, end)에서 해당 인덱스 값의 배열 값들의 합이 더 크거나 같으면 end인덱스 값을 한 칸 줄이고 작으면 start 인덱스 값을 한 칸 올렸다
'ALGORITHM > BOJ' 카테고리의 다른 글
[백준] 14226 이모티콘 (0) 2022.08.15 [백준] 17298 오큰수 (0) 2022.07.25 [BOJ] 1541 잃어버린 괄호 (0) 2022.07.04 [BOJ] 11779 최소비용 구하기2 (0) 2022.06.29 [BOJ] 10282 해킹 (0) 2022.06.27