Tags
- ๋ฐฑํธ๋ํน
- ์๋ฎฌ๋ ์ด์
- LV2
- ์ํ
- ๋๋น ์ฐ์ ํ์
- ๊ต์ฌ
- ์ ์๋ก
- ๊ทธ๋ํ ํ์
- ๊ทธ๋ํ ์ด๋ก
- ๋ฌธ์์ด
- queue
- Brute Force Algorithm
- greedy
- stack
- sort
- ์๋ฃ๊ตฌ์กฐ
- Java
- PGM
- CodingTest
- Python
- ๊ตฌํ
- Dynamic Programming
- BOJ
- ์ ๋ ฌ
- DP
- BFS
- SpringBoot
- Study
- dfs
- ๊น์ด ์ฐ์ ํ์
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1253 : ์ข๋ค ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๊ฐ์ ์์์ ์๋ก ๋ค๋ฅธ ๋ ์๋ก ๋ง๋ค ์ ์๋ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅด๋ฉด ๊ฐ์ด ๊ฐ์๋ ๋ค๋ฅธ ์์ด๋ค.
- ์๊ฐ ๋ณต์ก๋
- N์ ๊ฐ์๊ฐ ์ต๋๊ฐ 2,000์ด๋ผ ๊ฐ์ ํด๋ ์ข์ ์ ํ๋๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ N^2๋ณด๋ค ์์์ผ ํ๋ค.
(N^2 ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ N๋ฒ ๋ฐ๋ณตํด์ ์ต์ข ์๊ฐ ๋ณต์ก๋๋ N^3๊ฐ ๋๊ธฐ ๋๋ฌธ) - ์ข์ ์ ํ๋๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ O(nlongn)์ด์ด์ผ ํ๋ค. ์ ๋ ฌ๊ณผ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
- ๋จ, ์ ๋ ฌ๋ ๋ฐ์ดํฐ์์ ์๊ธฐ ์์ ์ ์ข์ ์ ๋ง๋ค๊ธฐ์ ํฌํจํ์ง ์๋๋ก ์ฃผ์
- N์ ๊ฐ์๊ฐ ์ต๋๊ฐ 2,000์ด๋ผ ๊ฐ์ ํด๋ ์ข์ ์ ํ๋๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ N^2๋ณด๋ค ์์์ผ ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long arr[] = new long[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
arr[i] = Long.parseLong(st.nextToken());
Arrays.sort(arr);
int answer = 0;
for (int k = 0; k < n; k++){ // arr[k]๊ฐ ์ข์ ์์ธ์ง ํ์ธ
long find = arr[k];
int i = 0;
int j = n - 1;
while(i < j){ // ํฌ ํฌ์ธํฐ
if (arr[i] + arr[j] == find){
if (i != k && j != k){ // ์๊ธฐ ์์ ์ ์ ์ธํ๊ณ ์๋ก ๋ค๋ฅธ ์์ฌ์ผ ํจ(์์น๋ง ๋ฌ๋ผ๋ ๋จ)
answer++;
break;
} else if (i == k) i++;
else if (j == k) j--;
} else if (arr[i] + arr[j] < find) i++;
else j--;
}
}
System.out.println(answer);
br.close();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- N๊ฐ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๋ ฌํ๋ค. N์ ์ต๋ 10์ต์ด๋ฏ๋ก N๊ณผ arr๋ฅผ longํ์ผ๋ก ์ ์ธํ๋ค.
- ํฌ ํฌ์ธํฐ i, j๋ฅผ ๋ฐฐ์ด arr ์์ชฝ ๋์ ์์น์ํค๊ณ ํฌ ํฌ์ธํฐ ์ด๋ ์์น์ ํ์ฉํด ํ์ํ๋ค.
- A[i] + A[j] > K : j--;
- A[i] + A[j] < K : i++;
- A[i] + A[j] == K : i++; j--; count++;
- arr์ ์ธ๋ฑ์ค 0๋ถํฐ N-1 ๊น์ง ํฌ ํฌ์ธํฐ๋ก ํ์ํ๋ค.
- ํฌ ํฌ์ธํฐ๊ฐ ์๊ธฐ์์ (K) ๊ฐ ๋์ง ์๋๋ก ์ฃผ์ํ๋ค.
๐ธ end ๐ธ
- ์๊ฐ ๋ณต์ก๋๋ ๊ณ์ฐ์ด ์๋๊ณ ํฌ ํฌ์ธํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฉํด์ผํ ์ง ๊ฐ์ด ์์กํ์ ๊ต์ฌ๋ฅผ ๋ณด๋ฉด์ ํ์ดํ๋ค.
- ์๊ฐ ๋ณต์ก๋๋ n์ ์ต๋๊ฐ์ ์ฐ์ฐํ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณฑํด์ 1์ต์ด 1์ด์ผ๋ ๋์ด๊ฐ๋์ง ํ์ธํด์ผํ๋ค.
- ํฌ ํฌ์ธํฐ๋ ์์ง ์์ ๋กญ๊ฒ ๋ค๋ฃจ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์์ ๋ ์ฐ์ต์ด ํ์ํด ๋ณด์ธ๋ค.
- ํ๊ทธ๋ฅผ ๋ณด๋ ์ด๋ถ ํ์์ด๋ ํด์๋ฅผ ์ด์ฉํด์๋ ํ์ด๊ฐ ๋๋ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2581 : ์์ (0) | 2022.09.29 |
---|---|
BOJ_4673 : ์ ํ ๋๋ฒ (0) | 2022.09.28 |
BOJ_1940 : ์ฃผ๋ชฝ (0) | 2022.09.24 |
BOJ_2018 : ์๋ค์ ํฉ 5 (0) | 2022.09.24 |
BOJ_10986 : ๋๋จธ์ง ํฉ (0) | 2022.09.23 |