1940번: 주몽
첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고
www.acmicpc.net
난이도: 실버 4
풀이: 투 포인터 알고리즘을 적용하는데, 이번에는 시작 지점에서는 포인터를 배열의 시작점과 끝점에 위치하여 차례로 포인터 간의 위치를 줄여가는 알고리즘을 이용하면 보다 편하게 문제를 해결할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import java.util.*; import java.io.*; public class P1940 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); int M = Integer.parseInt(st.nextToken()); int A[] = new int[N]; st = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i ++) { A[i] = Integer.parseInt(st.nextToken()); } Arrays.sort(A); int i = 0; int j = N-1; int count = 0; while (i < j) { if (A[i] + A[j] == M) { count ++; j --; i ++; } else if (A[i] + A[j] < M) { i ++; } else if (A[i] + A[j] > M) { j --; } } System.out.println(count); } } | cs |
'Algorithm (Java) > Data structure' 카테고리의 다른 글
配列とリスト: スライディングウィンドウ (0) | 2023.11.15 |
---|---|
배열과 리스트: '좋은 수' 구하기 (백준 1253) (0) | 2023.11.15 |
배열과 리스트: 연속된 자연수의 합 구하기 (백준 2018) (0) | 2023.11.09 |
配列とリスト: Two Pointersアルゴリズム (0) | 2023.11.09 |
배열과 리스트: 나머지 합 구하기 (백준 10986) (1) | 2023.11.09 |