[백준] - 3273번: 두 수의 합(Java)

병찬·2022년 6월 28일
0

Baekjoon Online Judge

목록 보기
13/18
post-thumbnail

문제📝


풀이💡

  • 본 문제는 이분 탐색을 활용해야 한다.
  • start는 0을 end는 입력한 숫자보다 -1을 대입한다.
  • start가 end보다 작을 때까지 반복문을 실행해서 쌍의 개수를 출력한다.

코드💻

// 백준 Silver3 - 3273(두 수의 합)
// 문제링크: https://www.acmicpc.net/problem/3273

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int arr[] = new int[num];

        for(int i=0;i<arr.length;i++)
            arr[i] = sc.nextInt();

        Arrays.sort(arr); // 정렬하기
     
        int target = sc.nextInt();
        
        int sum = 0;
        int cnt = 0;
        int end = num-1;
        int start = 0;

        while(start<end) {
            if (arr[start] + arr[end] == target) {
            	cnt++;
                start++;
                end--;
            } else if (arr[start] + arr[end] < target)
                start++;
            else
                end--;
        }
        System.out.println(cnt);
	}
}

결과😎


느낀점👨‍💻

이분 탐색 문제를 풀어본 적이 꽤 많은데도 아직까지는 완전하게 익숙하지는 않은 것 같다. 다음에 이분 탐색 문제를 활용해야 하는 문제를 위해서라도 더 공부를 해야겠다.


Sinbmil의 알고리즘 문제 코드

-> https://github.com/Sinbmil/Algorithm-St

profile
코딩을 열심히 하고 있습니다:)

0개의 댓글