-
[백준] 3273 두 수의 합 #JAVAAlgorithm Solving/BAEKJOON 2021. 1. 16. 00:56
BAEKJOON [3273] 두 수의 합?
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int x = Integer.parseInt(br.readLine()); int count = 0; int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = Integer.parseInt(st.nextToken()); } // 정렬함-> 경우의 수를 줄일 수 있음. Arrays.sort(arr); int startIdx = 0; int endIdx = n-1; while (startIdx < endIdx) { int sum = arr[startIdx] + arr[endIdx]; if(sum == x) { count++; endIdx--; startIdx++; } else if(sum > x) endIdx--; //합계가 x 보다 크면 종료인덱스 감소 else if(sum < x) startIdx++; //합계가 x 보다 작으면 시작인덱스 증가 } System.out.println(count); } }
풀이
- 정렬 후 수의 조합 계산 시 시간복잡도를 줄 일 수 있다.
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[백준] 1406 에디터 #JAVA (0) 2021.01.24 [백준] 18258 큐2 #JAVA (0) 2021.01.24 [백준] 1919 애너그램 만들기 #JAVA (0) 2021.01.15 [백준] 11328 Strfry #JAVA (0) 2021.01.15 [백준] 1182 부분수열의 합 #JAVA (0) 2021.01.15