๋ ์์ ํฉ - ํฌ ํฌ์ธํฐ (Lv. Sliver3)
1. ๋ฌธ์
2. ํ์ด
1. ๋ฌธ์
https://www.acmicpc.net/problem/3273
2. ํ์ด
import java.util.*;
import java.io.*;
public class Main {
public static int two_pointer(int N, int[] a, int x) {
int result = 0;
int left = 0;
int right = N-1;
int sum = 0;
Arrays.sort(a);
while (left < right) {
sum = a[left] + a[right];
if (sum == x) {
result++;
left++;
right--;
} else if (sum < x) {
left++;
} else {
right--;
}
}
return result;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] a = new int[N];
for (int i = 0; i < N; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
int x = Integer.parseInt(br.readLine());
System.out.println(two_pointer(N, a, x));
}
}
Arrays.sort(a); ๋ฅผ ํตํด a ๋ฐฐ์ด์ ์์๋ฅผ ์ ๋ ฌ ํด์ค๋๋ค.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
left | right |
์์ ๊ฐ์ด left๋ a ๋ฐฐ์ด์ ๊ฐ์ฅ ์ฒ์๋ถํฐ ์์ํ๊ณ right๋ a ๋ฐฐ์ด์ ๊ฐ์ฅ ๋์์ ์์ํฉ๋๋ค. ์ผ์ชฝ left ๋ ์ฆ๊ฐ๋ฅผ ํตํด์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๊ณ , ์ค๋ฅธ์ชฝ right๋ ๊ฐ์๋ฅผ ํตํด์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉฐ ํฉ์ ๊ตฌํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ๊ตฌํ๊ฒ ๋๋ฉด (2, 4) (4, 2) ์ฒ๋ผ ์ค๋ณต ์์ ์ ์ธํ ์์ ๊ตฌํ ์ ์์ต๋๋ค.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
left | right |
ํ์ฌ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ์ ํฉ์ด x ๋ณด๋ค ์์ ๋๋ ์์ ์ชฝ ์ธ๋ฑ์ค๋ฅผ ์ฌ๋ ค์ ๊ฐ์ ์ฌ๋ ค์ฃผ๊ณ , x ๋ณด๋ค ํด ๋๋ ํฐ ์ชฝ ์ธ๋ฑ์ค๋ฅผ ๋ด๋ ค์ ๊ฐ์ ๋ฎ์ถฐ์ค๋๋ค.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
left | left, right |
while๋ฌธ์ ๋๋ฉด์ ์ธ๋ฑ์ค๋ค์ด ํ ์ง์ ์์ ์๋ก ๋ง๋๊ฒ ๋์์ ๋ ์ข ๋ฃ๋๊ณ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋ฉ๋๋ค.
๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ !
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค <3
'๐ก Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ (1) - GROUP BY (Lv. 2) (0) | 2025.02.26 |
---|---|
[Java] N๊ณผ M (2) - ๋ฐฑํธ๋ํน (Lv. Sliver3) (0) | 2025.02.25 |
[Java] ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (Lv. Sliver2) (0) | 2025.02.21 |
[Java] ํธ๋ฆฌ ์ํ (Lv. Sliver1) (2) | 2025.02.20 |
[Java] DFS์ BFS (Lv. Sliver2) (0) | 2025.02.19 |